view dwt/internal/cocoa/NSObject.d @ 0:380af2bdd8e5

Upload of whole dwt tree
author Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
date Sat, 09 Aug 2008 17:00:02 +0200
parents
children 8b48be5454ce
line wrap: on
line source

/*******************************************************************************
 * Copyright (c) 2007 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     
 * Port to the D Programming language:
 *     Jacob Carlborg <jacob.carlborg@gmail.com>
 *******************************************************************************/
module dwt.internal.cocoa.NSObject;

import dwt.dwthelper.utils;
import dwt.internal.c.carboncore.MacTypes : FourCharCode;
import dwt.internal.cocoa.id;
import dwt.internal.cocoa.NSArchiver;
import dwt.internal.cocoa.NSArray;
import dwt.internal.cocoa.NSCachedURLResponse;
import dwt.internal.cocoa.NSClassDescription;
import dwt.internal.cocoa.NSCoder;
import dwt.internal.cocoa.NSConnection;
import dwt.internal.cocoa.NSData;
import dwt.internal.cocoa.NSDate : NSTimeInterval;
import dwt.internal.cocoa.NSDecimal;
import dwt.internal.cocoa.NSDecimalNumber;
import dwt.internal.cocoa.NSDictionary;
import dwt.internal.cocoa.NSDistantObjectRequest;
import dwt.internal.cocoa.NSEnumerator : NSFastEnumerationState;
import dwt.internal.cocoa.NSError;
import dwt.internal.cocoa.NSFileManager;
import dwt.internal.cocoa.NSIndexSet;
import dwt.internal.cocoa.NSInteger;
import dwt.internal.cocoa.NSInvocation;
import dwt.internal.cocoa.NSKeyedArchiver;
import dwt.internal.cocoa.NSKeyedUnarchiver;
import dwt.internal.cocoa.NSKeyValueObserving;
import dwt.internal.cocoa.NSMetadataItem;
import dwt.internal.cocoa.NSMetadataQuery;
import dwt.internal.cocoa.NSMethodSignature;
import dwt.internal.cocoa.NSMutableArray;
import dwt.internal.cocoa.NSMutableSet;
import dwt.internal.cocoa.NSNetService;
import dwt.internal.cocoa.NSNetServiceBrowser;
import dwt.internal.cocoa.NSPortCoder;
import dwt.internal.cocoa.NSPortMessage;
import dwt.internal.cocoa.NSRange;
import dwt.internal.cocoa.NSScriptObjectSpecifier;
import dwt.internal.cocoa.NSSet;
import dwt.internal.cocoa.NSSpellServer;
import dwt.internal.cocoa.NSStream;
import dwt.internal.cocoa.NSString;
import dwt.internal.cocoa.NSThread;
import dwt.internal.cocoa.NSURL;
import dwt.internal.cocoa.NSURLAuthenticationChallenge;
import dwt.internal.cocoa.NSURLCache : NSURLCacheStoragePolicy;
import dwt.internal.cocoa.NSURLConnection;
import dwt.internal.cocoa.NSURLCredential;
import dwt.internal.cocoa.NSURLDownload;
import dwt.internal.cocoa.NSURLHandle;
import dwt.internal.cocoa.NSURLProtocol;
import dwt.internal.cocoa.NSURLRequest;
import dwt.internal.cocoa.NSURLResponse;
import dwt.internal.cocoa.NSXMLParser;
import dwt.internal.cocoa.NSZone;
import dwt.internal.cocoa.OS;
import objc = dwt.internal.objc.runtime;

public class NSObject : id
{

    public this ()
    {
        super();
    }

    public this (objc.id id)
    {
        super(id);
    }

    public void URL_resourceDataDidBecomeAvailable_ (NSURL sender, NSData newBytes)
    {
        OS.objc_msgSend(this.id, OS.sel_URL_1resourceDataDidBecomeAvailable_1, sender !is null ? sender.id : null,
                newBytes !is null ? newBytes.id : null);
    }

    public void URL_resourceDidFailLoadingWithReason_ (NSURL sender, NSString reason)
    {
        OS.objc_msgSend(this.id, OS.sel_URL_1resourceDidFailLoadingWithReason_1, sender !is null ? sender.id : null,
                reason !is null ? reason.id : null);
    }

    public void URLHandle_resourceDataDidBecomeAvailable_ (NSURLHandle sender, NSData newBytes)
    {
        OS.objc_msgSend(this.id, OS.sel_URLHandle_1resourceDataDidBecomeAvailable_1, sender !is null ? sender.id : null,
                newBytes !is null ? newBytes.id : null);
    }

    public void URLHandle_resourceDidFailLoadingWithReason_ (NSURLHandle sender, NSString reason)
    {
        OS.objc_msgSend(this.id, OS.sel_URLHandle_1resourceDidFailLoadingWithReason_1, sender !is null ? sender.id : null,
                reason !is null ? reason.id : null);
    }

    public void URLHandleResourceDidBeginLoading (NSURLHandle sender)
    {
        OS.objc_msgSend(this.id, OS.sel_URLHandleResourceDidBeginLoading_1, sender !is null ? sender.id : null);
    }

    public void URLHandleResourceDidCancelLoading (NSURLHandle sender)
    {
        OS.objc_msgSend(this.id, OS.sel_URLHandleResourceDidCancelLoading_1, sender !is null ? sender.id : null);
    }

    public void URLHandleResourceDidFinishLoading (NSURLHandle sender)
    {
        OS.objc_msgSend(this.id, OS.sel_URLHandleResourceDidFinishLoading_1, sender !is null ? sender.id : null);
    }

    public void URLProtocol_cachedResponseIsValid_ (NSURLProtocol protocol, NSCachedURLResponse cachedResponse)
    {
        OS.objc_msgSend(this.id, OS.sel_URLProtocol_1cachedResponseIsValid_1, protocol !is null ? protocol.id : null,
                cachedResponse !is null ? cachedResponse.id : null);
    }

    public void URLProtocol_didCancelAuthenticationChallenge_ (NSURLProtocol protocol, NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_URLProtocol_1didCancelAuthenticationChallenge_1, protocol !is null ? protocol.id : null,
                challenge !is null ? challenge.id : null);
    }

    public void URLProtocol_didFailWithError_ (NSURLProtocol protocol, NSError error)
    {
        OS.objc_msgSend(this.id, OS.sel_URLProtocol_1didFailWithError_1, protocol !is null ? protocol.id : null, error !is null ? error.id : null);
    }

    public void URLProtocol_didLoadData_ (NSURLProtocol protocol, NSData data)
    {
        OS.objc_msgSend(this.id, OS.sel_URLProtocol_1didLoadData_1, protocol !is null ? protocol.id : null, data !is null ? data.id : null);
    }

    public void URLProtocol_didReceiveAuthenticationChallenge_ (NSURLProtocol protocol, NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_URLProtocol_1didReceiveAuthenticationChallenge_1, protocol !is null ? protocol.id : null,
                challenge !is null ? challenge.id : null);
    }

    public void URLProtocol_didReceiveResponse_cacheStoragePolicy_ (NSURLProtocol protocol, NSURLResponse response, NSURLCacheStoragePolicy policy)
    {
        OS.objc_msgSend(this.id, OS.sel_URLProtocol_1didReceiveResponse_1cacheStoragePolicy_1, protocol !is null ? protocol.id : null,
                response !is null ? response.id : null, policy);
    }

    public void URLProtocol_wasRedirectedToRequest_redirectResponse_ (NSURLProtocol protocol, NSURLRequest request, NSURLResponse redirectResponse)
    {
        OS.objc_msgSend(this.id, OS.sel_URLProtocol_1wasRedirectedToRequest_1redirectResponse_1, protocol !is null ? protocol.id : null,
                request !is null ? request.id : null, redirectResponse !is null ? redirectResponse.id : null);
    }

    public void URLProtocolDidFinishLoading (NSURLProtocol protocol)
    {
        OS.objc_msgSend(this.id, OS.sel_URLProtocolDidFinishLoading_1, protocol !is null ? protocol.id : null);
    }

    public void URLResourceDidCancelLoading (NSURL sender)
    {
        OS.objc_msgSend(this.id, OS.sel_URLResourceDidCancelLoading_1, sender !is null ? sender.id : null);
    }

    public void URLResourceDidFinishLoading (NSURL sender)
    {
        OS.objc_msgSend(this.id, OS.sel_URLResourceDidFinishLoading_1, sender !is null ? sender.id : null);
    }

    public static bool accessInstanceVariablesDirectly ()
    {
        return OS.objc_msgSend(OS.class_NSObject, OS.sel_accessInstanceVariablesDirectly) !is null;
    }

    public void addObserver (NSObject observer, NSString keyPath, NSKeyValueObservingOptions options, void* context)
    {
        OS.objc_msgSend(this.id, OS.sel_addObserver_1forKeyPath_1options_1context_1, observer !is null ? observer.id : null,
                keyPath !is null ? keyPath.id : null, options, context);
    }

    public NSObject alloc ()
    {
        objc.id result = OS.objc_msgSend(cast(objc.id)get_class(), OS.sel_alloc);
        this.id = result;
        return result !is null ? this : null;
    }

    public objc.Class get_class ()
    {
        String name = this.classinfo.name;
        int index = name.lastIndexOf('.');
        if (index != -1)
            name = name.substring(index + 1);
        return cast(objc.Class)OS.objc_getClass(name);
    }

    public static id allocWithZone (NSZone* zone)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSObject, OS.sel_allocWithZone_1, zone);
        return result !is null ? new id(result) : null;
    }

    public void archiver_didEncodeObject_ (NSKeyedArchiver archiver, id object)
    {
        OS.objc_msgSend(this.id, OS.sel_archiver_1didEncodeObject_1, archiver !is null ? archiver.id : null, object !is null ? object.id : null);
    }

    public id archiver_willEncodeObject_ (NSKeyedArchiver archiver, id object)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_archiver_1willEncodeObject_1, archiver !is null ? archiver.id : null,
                object !is null ? object.id : null);
        return result !is null ? new id(result) : null;
    }

    public void archiver_willReplaceObject_withObject_ (NSKeyedArchiver archiver, id object, id newObject)
    {
        OS.objc_msgSend(this.id, OS.sel_archiver_1willReplaceObject_1withObject_1, archiver !is null ? archiver.id : null,
                object !is null ? object.id : null, newObject !is null ? newObject.id : null);
    }

    public void archiverDidFinish (NSKeyedArchiver archiver)
    {
        OS.objc_msgSend(this.id, OS.sel_archiverDidFinish_1, archiver !is null ? archiver.id : null);
    }

    public void archiverWillFinish (NSKeyedArchiver archiver)
    {
        OS.objc_msgSend(this.id, OS.sel_archiverWillFinish_1, archiver !is null ? archiver.id : null);
    }

    public bool attemptRecoveryFromError_optionIndex_ (NSError error, NSUInteger recoveryOptionIndex)
    {
        return OS.objc_msgSend(this.id, OS.sel_attemptRecoveryFromError_1optionIndex_1, error !is null ? error.id : null, recoveryOptionIndex) !is null;
    }

    public void attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_ (NSError error, NSUInteger recoveryOptionIndex, id delegatee,
            objc.SEL didRecoverSelector, void* contextInfo)
    {
        OS.objc_msgSend(this.id, OS.sel_attemptRecoveryFromError_1optionIndex_1delegate_1didRecoverSelector_1contextInfo_1,
                error !is null ? error.id : null, recoveryOptionIndex, delegatee !is null ? delegatee.id : null, didRecoverSelector, contextInfo);
    }

    public NSArray attributeKeys ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_attributeKeys);
        return result !is null ? new NSArray(result) : null;
    }

    public bool authenticateComponents (NSArray components, NSData signature)
    {
        return OS.objc_msgSend(this.id, OS.sel_authenticateComponents_1withData_1, components !is null ? components.id : null,
                signature !is null ? signature.id : null) !is null;
    }

    public NSData authenticationDataForComponents (NSArray components)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_authenticationDataForComponents_1, components !is null ? components.id : null);
        return result !is null ? new NSData(result) : null;
    }

    public static bool automaticallyNotifiesObserversForKey (NSString key)
    {
        return OS.objc_msgSend(OS.class_NSObject, OS.sel_automaticallyNotifiesObserversForKey_1, key !is null ? key.id : null) !is null;
    }

    public id autorelease ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_autorelease);
        return result !is null ? new id(result) : null;
    }

    public id awakeAfterUsingCoder (NSCoder aDecoder)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_awakeAfterUsingCoder_1, aDecoder !is null ? aDecoder.id : null);
        return result !is null ? new id(result) : null;
    }

    public void cancelAuthenticationChallenge (NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_cancelAuthenticationChallenge_1, challenge !is null ? challenge.id : null);
    }

    public static void static_cancelPreviousPerformRequestsWithTarget_ (id aTarget)
    {
        OS.objc_msgSend(OS.class_NSObject, OS.sel_cancelPreviousPerformRequestsWithTarget_1, aTarget !is null ? aTarget.id : null);
    }

    public static void static_cancelPreviousPerformRequestsWithTarget_selector_object_ (id aTarget, objc.SEL aSelector, id anArgument)
    {
        OS.objc_msgSend(OS.class_NSObject, OS.sel_cancelPreviousPerformRequestsWithTarget_1selector_1object_1, aTarget !is null ? aTarget.id : null,
                aSelector, anArgument !is null ? anArgument.id : null);
    }

    public static objc.Class static_class ()
    {
        return cast(objc.Class)OS.objc_msgSend(OS.class_NSObject, OS.sel_class);
    }

    //public objc.Class class() {
    //  return OS.objc_msgSend(this.id, OS.sel_class);
    //}

    public FourCharCode classCode ()
    {
        return OS.objc_msgSend(this.id, OS.sel_classCode);
    }

    public NSClassDescription classDescription ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_classDescription);
        return result !is null ? new NSClassDescription(result) : null;
    }

    public static NSArray classFallbacksForKeyedArchiver ()
    {
        objc.id result = OS.objc_msgSend(OS.class_NSObject, OS.sel_classFallbacksForKeyedArchiver);
        return result !is null ? new NSArray(result) : null;
    }

    public objc.Class classForArchiver ()
    {
        return cast(objc.Class) OS.objc_msgSend(this.id, OS.sel_classForArchiver);
    }

    public objc.Class classForCoder ()
    {
        return cast(objc.Class) OS.objc_msgSend(this.id, OS.sel_classForCoder);
    }

    public objc.Class classForKeyedArchiver ()
    {
        return cast(objc.Class) OS.objc_msgSend(this.id, OS.sel_classForKeyedArchiver);
    }

    public static objc.Class classForKeyedUnarchiver ()
    {
        return cast(objc.Class) OS.objc_msgSend(OS.class_NSObject, OS.sel_classForKeyedUnarchiver);
    }

    public objc.Class  classForPortCoder ()
    {
        return cast(objc.Class) OS.objc_msgSend(this.id, OS.sel_classForPortCoder);
    }

    public NSString className ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_className);
        return result !is null ? new NSString(result) : null;
    }

    public id coerceValue (id value, NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_coerceValue_1forKey_1, value !is null ? value.id : null, key !is null ? key.id : null);
        return result !is null ? new id(result) : null;
    }

    //public bool conformsToProtocol_(Protocol aProtocol) {
    //  return OS.objc_msgSend(this.id, OS.sel_conformsToProtocol_1, aProtocol !is null ? aProtocol.id : null) !is null;
    //}
    //
    //public static bool static_conformsToProtocol_(Protocol protocol) {
    //  return OS.objc_msgSend(OS.class_NSObject, OS.sel_conformsToProtocol_1, protocol !is null ? protocol.id : null) !is null;
    //}

    public void connection_didCancelAuthenticationChallenge_ (NSURLConnection connection, NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_connection_1didCancelAuthenticationChallenge_1, connection !is null ? connection.id : null,
                challenge !is null ? challenge.id : null);
    }

    public void connection_didFailWithError_ (NSURLConnection connection, NSError error)
    {
        OS.objc_msgSend(this.id, OS.sel_connection_1didFailWithError_1, connection !is null ? connection.id : null, error !is null ? error.id : null);
    }

    public void connection_didReceiveAuthenticationChallenge_ (NSURLConnection connection, NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_connection_1didReceiveAuthenticationChallenge_1, connection !is null ? connection.id : null,
                challenge !is null ? challenge.id : null);
    }

    public void connection_didReceiveData_ (NSURLConnection connection, NSData data)
    {
        OS.objc_msgSend(this.id, OS.sel_connection_1didReceiveData_1, connection !is null ? connection.id : null, data !is null ? data.id : null);
    }

    public void connection_didReceiveResponse_ (NSURLConnection connection, NSURLResponse response)
    {
        OS.objc_msgSend(this.id, OS.sel_connection_1didReceiveResponse_1, connection !is null ? connection.id : null,
                response !is null ? response.id : null);
    }

    public bool connection_handleRequest_ (NSConnection connection, NSDistantObjectRequest doreq)
    {
        return OS.objc_msgSend(this.id, OS.sel_connection_1handleRequest_1, connection !is null ? connection.id : null,
                doreq !is null ? doreq.id : null) !is null;
    }

    public bool connection_shouldMakeNewConnection_ (NSConnection ancestor, NSConnection conn)
    {
        return OS.objc_msgSend(this.id, OS.sel_connection_1shouldMakeNewConnection_1, ancestor !is null ? ancestor.id : null,
                conn !is null ? conn.id : null) !is null;
    }

    public NSCachedURLResponse connection_willCacheResponse_ (NSURLConnection connection, NSCachedURLResponse cachedResponse)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_connection_1willCacheResponse_1, connection !is null ? connection.id : null,
                cachedResponse !is null ? cachedResponse.id : null);
        return result !is null ? new NSCachedURLResponse(result) : null;
    }

    public NSURLRequest connection_willSendRequest_redirectResponse_ (NSURLConnection connection, NSURLRequest request, NSURLResponse response)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_connection_1willSendRequest_1redirectResponse_1, connection !is null ? connection.id : null,
                request !is null ? request.id : null, response !is null ? response.id : null);
        return result !is null ? new NSURLRequest(result) : null;
    }

    public void connectionDidFinishLoading (NSURLConnection connection)
    {
        OS.objc_msgSend(this.id, OS.sel_connectionDidFinishLoading_1, connection !is null ? connection.id : null);
    }

    public void continueWithoutCredentialForAuthenticationChallenge (NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_continueWithoutCredentialForAuthenticationChallenge_1, challenge !is null ? challenge.id : null);
    }

    public id copy ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_copy);
        return result !is null ? new id(result) : null;
    }

    public id copyScriptingValue (id value, NSString key, NSDictionary properties)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_copyScriptingValue_1forKey_1withProperties_1, value !is null ? value.id : null,
                key !is null ? key.id : null, properties !is null ? properties.id : null);
        return result !is null ? new id(result) : null;
    }

    public id copyWithZone_ (NSZone* zone)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_copyWithZone_1, zone);
        return result !is null ? new id(result) : null;
    }

    public static id static_copyWithZone_ (NSZone* zone)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSObject, OS.sel_copyWithZone_1, zone);
        return result !is null ? new id(result) : null;
    }

    public NSUInteger countByEnumeratingWithState (NSFastEnumerationState* state, objc.id* stackbuf, NSUInteger len)
    {
        return OS.objc_msgSend(this.id, OS.sel_countByEnumeratingWithState_1objects_1count_1, state, stackbuf, len);
    }

    public id createConversationForConnection (NSConnection conn)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_createConversationForConnection_1, conn !is null ? conn.id : null);
        return result !is null ? new id(result) : null;
    }

    public void dealloc ()
    {
        OS.objc_msgSend(this.id, OS.sel_dealloc);
    }

    public NSString description ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_description);
        return result !is null ? new NSString(result) : null;
    }

    public static NSString static_description ()
    {
        objc.id result = OS.objc_msgSend(OS.class_NSObject, OS.sel_description);
        return result !is null ? new NSString(result) : null;
    }

    public NSDictionary dictionaryWithValuesForKeys (NSArray keys)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_dictionaryWithValuesForKeys_1, keys !is null ? keys.id : null);
        return result !is null ? new NSDictionary(result) : null;
    }

    public void didChange (NSKeyValueChange changeKind, NSIndexSet indexes, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_didChange_1valuesAtIndexes_1forKey_1, changeKind, indexes !is null ? indexes.id : null,
                key !is null ? key.id : null);
    }

    public void didChangeValueForKey_ (NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_didChangeValueForKey_1, key !is null ? key.id : null);
    }

    public void didChangeValueForKey_withSetMutation_usingObjects_ (NSString key, NSKeyValueSetMutationKind mutationKind, NSSet objects)
    {
        OS.objc_msgSend(this.id, OS.sel_didChangeValueForKey_1withSetMutation_1usingObjects_1, key !is null ? key.id : null, mutationKind,
                objects !is null ? objects.id : null);
    }

    public bool doesContain (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_doesContain_1, object !is null ? object.id : null) !is null;
    }

    public void doesNotRecognizeSelector (objc.SEL aSelector)
    {
        OS.objc_msgSend(this.id, OS.sel_doesNotRecognizeSelector_1, aSelector);
    }

    public void download_decideDestinationWithSuggestedFilename_ (NSURLDownload download, NSString filename)
    {
        OS.objc_msgSend(this.id, OS.sel_download_1decideDestinationWithSuggestedFilename_1, download !is null ? download.id : null,
                filename !is null ? filename.id : null);
    }

    public void download_didCancelAuthenticationChallenge_ (NSURLDownload download, NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_download_1didCancelAuthenticationChallenge_1, download !is null ? download.id : null,
                challenge !is null ? challenge.id : null);
    }

    public void download_didCreateDestination_ (NSURLDownload download, NSString path)
    {
        OS.objc_msgSend(this.id, OS.sel_download_1didCreateDestination_1, download !is null ? download.id : null, path !is null ? path.id : null);
    }

    public void download_didFailWithError_ (NSURLDownload download, NSError error)
    {
        OS.objc_msgSend(this.id, OS.sel_download_1didFailWithError_1, download !is null ? download.id : null, error !is null ? error.id : null);
    }

    public void download_didReceiveAuthenticationChallenge_ (NSURLDownload download, NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_download_1didReceiveAuthenticationChallenge_1, download !is null ? download.id : null,
                challenge !is null ? challenge.id : null);
    }

    public void download_didReceiveDataOfLength_ (NSURLDownload download, NSUInteger length)
    {
        OS.objc_msgSend(this.id, OS.sel_download_1didReceiveDataOfLength_1, download !is null ? download.id : null, length);
    }

    public void download_didReceiveResponse_ (NSURLDownload download, NSURLResponse response)
    {
        OS.objc_msgSend(this.id, OS.sel_download_1didReceiveResponse_1, download !is null ? download.id : null,
                response !is null ? response.id : null);
    }

    public bool download_shouldDecodeSourceDataOfMIMEType_ (NSURLDownload download, NSString encodingType)
    {
        return OS.objc_msgSend(this.id, OS.sel_download_1shouldDecodeSourceDataOfMIMEType_1, download !is null ? download.id : null,
                encodingType !is null ? encodingType.id : null) !is null;
    }

    public void download_willResumeWithResponse_fromByte_ (NSURLDownload download, NSURLResponse response, long startingByte)
    {
        OS.objc_msgSend(this.id, OS.sel_download_1willResumeWithResponse_1fromByte_1, download !is null ? download.id : null,
                response !is null ? response.id : null, startingByte);
    }

    public NSURLRequest download_willSendRequest_redirectResponse_ (NSURLDownload download, NSURLRequest request, NSURLResponse redirectResponse)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_download_1willSendRequest_1redirectResponse_1, download !is null ? download.id : null,
                request !is null ? request.id : null, redirectResponse !is null ? redirectResponse.id : null);
        return result !is null ? new NSURLRequest(result) : null;
    }

    public void downloadDidBegin (NSURLDownload download)
    {
        OS.objc_msgSend(this.id, OS.sel_downloadDidBegin_1, download !is null ? download.id : null);
    }

    public void downloadDidFinish (NSURLDownload download)
    {
        OS.objc_msgSend(this.id, OS.sel_downloadDidFinish_1, download !is null ? download.id : null);
    }

    public void encodeWithCoder (NSCoder aCoder)
    {
        OS.objc_msgSend(this.id, OS.sel_encodeWithCoder_1, aCoder !is null ? aCoder.id : null);
    }

    public NSDecimalNumber exceptionDuringOperation (objc.SEL operation, NSCalculationError error, NSDecimalNumber leftOperand, NSDecimalNumber rightOperand)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_exceptionDuringOperation_1error_1leftOperand_1rightOperand_1, operation, error,
                leftOperand !is null ? leftOperand.id : null, rightOperand !is null ? rightOperand.id : null);
        return result !is null ? new NSDecimalNumber(result) : null;
    }

    public bool fileManager_shouldCopyItemAtPath_toPath_ (NSFileManager fileManager, NSString srcPath, NSString dstPath)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldCopyItemAtPath_1toPath_1, fileManager !is null ? fileManager.id : null,
                srcPath !is null ? srcPath.id : null, dstPath !is null ? dstPath.id : null) !is null;
    }

    public bool fileManager_shouldLinkItemAtPath_toPath_ (NSFileManager fileManager, NSString srcPath, NSString dstPath)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldLinkItemAtPath_1toPath_1, fileManager !is null ? fileManager.id : null,
                srcPath !is null ? srcPath.id : null, dstPath !is null ? dstPath.id : null) !is null;
    }

    public bool fileManager_shouldMoveItemAtPath_toPath_ (NSFileManager fileManager, NSString srcPath, NSString dstPath)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldMoveItemAtPath_1toPath_1, fileManager !is null ? fileManager.id : null,
                srcPath !is null ? srcPath.id : null, dstPath !is null ? dstPath.id : null) !is null;
    }

    public bool fileManager_shouldProceedAfterError_ (NSFileManager fm, NSDictionary errorInfo)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldProceedAfterError_1, fm !is null ? fm.id : null,
                errorInfo !is null ? errorInfo.id : null) !is null;
    }

    public bool fileManager_shouldProceedAfterError_copyingItemAtPath_toPath_ (NSFileManager fileManager, NSError error, NSString srcPath,
            NSString dstPath)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldProceedAfterError_1copyingItemAtPath_1toPath_1,
                fileManager !is null ? fileManager.id : null, error !is null ? error.id : null, srcPath !is null ? srcPath.id : null,
                dstPath !is null ? dstPath.id : null) !is null;
    }

    public bool fileManager_shouldProceedAfterError_linkingItemAtPath_toPath_ (NSFileManager fileManager, NSError error, NSString srcPath,
            NSString dstPath)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldProceedAfterError_1linkingItemAtPath_1toPath_1,
                fileManager !is null ? fileManager.id : null, error !is null ? error.id : null, srcPath !is null ? srcPath.id : null,
                dstPath !is null ? dstPath.id : null) !is null;
    }

    public bool fileManager_shouldProceedAfterError_movingItemAtPath_toPath_ (NSFileManager fileManager, NSError error, NSString srcPath,
            NSString dstPath)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldProceedAfterError_1movingItemAtPath_1toPath_1,
                fileManager !is null ? fileManager.id : null, error !is null ? error.id : null, srcPath !is null ? srcPath.id : null,
                dstPath !is null ? dstPath.id : null) !is null;
    }

    public bool fileManager_shouldProceedAfterError_removingItemAtPath_ (NSFileManager fileManager, NSError error, NSString path)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldProceedAfterError_1removingItemAtPath_1,
                fileManager !is null ? fileManager.id : null, error !is null ? error.id : null, path !is null ? path.id : null) !is null;
    }

    public bool fileManager_shouldRemoveItemAtPath_ (NSFileManager fileManager, NSString path)
    {
        return OS.objc_msgSend(this.id, OS.sel_fileManager_1shouldRemoveItemAtPath_1, fileManager !is null ? fileManager.id : null,
                path !is null ? path.id : null) !is null;
    }

    public void fileManager_willProcessPath_ (NSFileManager fm, NSString path)
    {
        OS.objc_msgSend(this.id, OS.sel_fileManager_1willProcessPath_1, fm !is null ? fm.id : null, path !is null ? path.id : null);
    }

    public void finalizeXX ()
    {
        OS.objc_msgSend(this.id, OS.sel_finalize);
    }

    public void forwardInvocation (NSInvocation anInvocation)
    {
        OS.objc_msgSend(this.id, OS.sel_forwardInvocation_1, anInvocation !is null ? anInvocation.id : null);
    }

    public void handleMachMessage (void* msg)
    {
        OS.objc_msgSend(this.id, OS.sel_handleMachMessage_1, msg);
    }

    public void handlePortMessage (NSPortMessage message)
    {
        OS.objc_msgSend(this.id, OS.sel_handlePortMessage_1, message !is null ? message.id : null);
    }

    public id handleQueryWithUnboundKey (NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_handleQueryWithUnboundKey_1, key !is null ? key.id : null);
        return result !is null ? new id(result) : null;
    }

    public void handleTakeValue (id value, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_handleTakeValue_1forUnboundKey_1, value !is null ? value.id : null, key !is null ? key.id : null);
    }

    public NSUInteger hash ()
    {
        return cast(NSUInteger) OS.objc_msgSend(this.id, OS.sel_hash);
    }

    public NSArray indicesOfObjectsByEvaluatingObjectSpecifier (NSScriptObjectSpecifier specifier)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_indicesOfObjectsByEvaluatingObjectSpecifier_1, specifier !is null ? specifier.id : null);
        return result !is null ? new NSArray(result) : null;
    }

    public NSObject init ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_init);
        return result !is null ? this : null;
    }

    public NSObject initWithCoder (NSCoder aDecoder)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithCoder_1, aDecoder !is null ? aDecoder.id : null);
        return result !is null ? this : null;
    }

    public static void initialize ()
    {
        OS.objc_msgSend(OS.class_NSObject, OS.sel_initialize);
    }

    public void insertValue_atIndex_inPropertyWithKey_ (id value, NSUInteger index, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_insertValue_1atIndex_1inPropertyWithKey_1, value !is null ? value.id : null, index,
                key !is null ? key.id : null);
    }

    public void insertValue_inPropertyWithKey_ (id value, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_insertValue_1inPropertyWithKey_1, value !is null ? value.id : null, key !is null ? key.id : null);
    }

    public static objc.IMP instanceMethodForSelector (objc.SEL aSelector)
    {
        return cast(objc.IMP) OS.objc_msgSend(OS.class_NSObject, OS.sel_instanceMethodForSelector_1, aSelector);
    }

    public static NSMethodSignature instanceMethodSignatureForSelector (objc.SEL aSelector)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSObject, OS.sel_instanceMethodSignatureForSelector_1, aSelector);
        return result !is null ? new NSMethodSignature(result) : null;
    }

    public static bool instancesRespondToSelector (objc.SEL aSelector)
    {
        return OS.objc_msgSend(OS.class_NSObject, OS.sel_instancesRespondToSelector_1, aSelector) !is null;
    }

    public NSString inverseForRelationshipKey (NSString relationshipKey)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_inverseForRelationshipKey_1, relationshipKey !is null ? relationshipKey.id : null);
        return result !is null ? new NSString(result) : null;
    }

    public bool isCaseInsensitiveLike (NSString object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isCaseInsensitiveLike_1, object !is null ? object.id : null) !is null;
    }

    public bool isEqual (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isEqual_1, object !is null ? object.id : null) !is null;
    }

    public bool isEqualTo (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isEqualTo_1, object !is null ? object.id : null) !is null;
    }

    public bool isGreaterThan (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isGreaterThan_1, object !is null ? object.id : null) !is null;
    }

    public bool isGreaterThanOrEqualTo (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isGreaterThanOrEqualTo_1, object !is null ? object.id : null) !is null;
    }

    public bool isKindOfClass (objc.Class aClass)
    {
        return OS.objc_msgSend(this.id, OS.sel_isKindOfClass_1, aClass) !is null;
    }

    public bool isLessThan (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isLessThan_1, object !is null ? object.id : null) !is null;
    }

    public bool isLessThanOrEqualTo (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isLessThanOrEqualTo_1, object !is null ? object.id : null) !is null;
    }

    public bool isLike (NSString object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isLike_1, object !is null ? object.id : null) !is null;
    }

    public bool isMemberOfClass (objc.Class aClass)
    {
        return OS.objc_msgSend(this.id, OS.sel_isMemberOfClass_1, aClass) !is null;
    }

    public bool isNotEqualTo (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_isNotEqualTo_1, object !is null ? object.id : null) !is null;
    }

    public bool isProxy ()
    {
        return OS.objc_msgSend(this.id, OS.sel_isProxy) !is null;
    }

    public static bool isSubclassOfClass (objc.Class aClass)
    {
        return OS.objc_msgSend(OS.class_NSObject, OS.sel_isSubclassOfClass_1, aClass) !is null;
    }

    public static NSSet keyPathsForValuesAffectingValueForKey (NSString key)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSObject, OS.sel_keyPathsForValuesAffectingValueForKey_1, key !is null ? key.id : null);
        return result !is null ? new NSSet(result) : null;
    }

    public static void load ()
    {
        OS.objc_msgSend(OS.class_NSObject, OS.sel_load);
    }

    public void lock ()
    {
        OS.objc_msgSend(this.id, OS.sel_lock);
    }

    public bool makeNewConnection (NSConnection conn, NSConnection ancestor)
    {
        return OS.objc_msgSend(this.id, OS.sel_makeNewConnection_1sender_1, conn !is null ? conn.id : null, ancestor !is null ? ancestor.id : null) !is null;
    }

    public id metadataQuery_replacementObjectForResultObject_ (NSMetadataQuery query, NSMetadataItem result)
    {
        objc.id r = OS.objc_msgSend(this.id, OS.sel_metadataQuery_1replacementObjectForResultObject_1, query !is null ? query.id : null,
                result !is null ? result.id : null);
        return r !is null ? new id(r) : null;
    }

    public id metadataQuery_replacementValueForAttribute_value_ (NSMetadataQuery query, NSString attrName, id attrValue)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_metadataQuery_1replacementValueForAttribute_1value_1, query !is null ? query.id : null,
                attrName !is null ? attrName.id : null, attrValue !is null ? attrValue.id : null);
        return result !is null ? new id(result) : null;
    }

    public objc.IMP methodForSelector (objc.SEL aSelector)
    {
        return OS.objc_msgSend(this.id, OS.sel_methodForSelector_1, aSelector);
    }

    public NSMethodSignature methodSignatureForSelector (objc.SEL aSelector)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_methodSignatureForSelector_1, aSelector);
        return result !is null ? new NSMethodSignature(result) : null;
    }

    public NSMutableArray mutableArrayValueForKey (NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_mutableArrayValueForKey_1, key !is null ? key.id : null);
        return result !is null ? new NSMutableArray(result) : null;
    }

    public NSMutableArray mutableArrayValueForKeyPath (NSString keyPath)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_mutableArrayValueForKeyPath_1, keyPath !is null ? keyPath.id : null);
        return result !is null ? new NSMutableArray(result) : null;
    }

    public id mutableCopy ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_mutableCopy);
        return result !is null ? new id(result) : null;
    }

    public id mutableCopyWithZone_ (NSZone* zone)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_mutableCopyWithZone_1, zone);
        return result !is null ? new id(result) : null;
    }

    public static id static_mutableCopyWithZone_ (NSZone* zone)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSObject, OS.sel_mutableCopyWithZone_1, zone);
        return result !is null ? new id(result) : null;
    }

    public NSMutableSet mutableSetValueForKey (NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_mutableSetValueForKey_1, key !is null ? key.id : null);
        return result !is null ? new NSMutableSet(result) : null;
    }

    public NSMutableSet mutableSetValueForKeyPath (NSString keyPath)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_mutableSetValueForKeyPath_1, keyPath !is null ? keyPath.id : null);
        return result !is null ? new NSMutableSet(result) : null;
    }

    public void netService_didNotPublish_ (NSNetService sender, NSDictionary errorDict)
    {
        OS.objc_msgSend(this.id, OS.sel_netService_1didNotPublish_1, sender !is null ? sender.id : null, errorDict !is null ? errorDict.id : null);
    }

    public void netService_didNotResolve_ (NSNetService sender, NSDictionary errorDict)
    {
        OS.objc_msgSend(this.id, OS.sel_netService_1didNotResolve_1, sender !is null ? sender.id : null, errorDict !is null ? errorDict.id : null);
    }

    public void netService_didUpdateTXTRecordData_ (NSNetService sender, NSData data)
    {
        OS.objc_msgSend(this.id, OS.sel_netService_1didUpdateTXTRecordData_1, sender !is null ? sender.id : null, data !is null ? data.id : null);
    }

    public void netServiceBrowser_didFindDomain_moreComing_ (NSNetServiceBrowser aNetServiceBrowser, NSString domainString, bool moreComing)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceBrowser_1didFindDomain_1moreComing_1, aNetServiceBrowser !is null ? aNetServiceBrowser.id : null,
                domainString !is null ? domainString.id : null, moreComing);
    }

    public void netServiceBrowser_didFindService_moreComing_ (NSNetServiceBrowser aNetServiceBrowser, NSNetService aNetService, bool moreComing)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceBrowser_1didFindService_1moreComing_1, aNetServiceBrowser !is null ? aNetServiceBrowser.id : null,
                aNetService !is null ? aNetService.id : null, moreComing);
    }

    public void netServiceBrowser_didNotSearch_ (NSNetServiceBrowser aNetServiceBrowser, NSDictionary errorDict)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceBrowser_1didNotSearch_1, aNetServiceBrowser !is null ? aNetServiceBrowser.id : null,
                errorDict !is null ? errorDict.id : null);
    }

    public void netServiceBrowser_didRemoveDomain_moreComing_ (NSNetServiceBrowser aNetServiceBrowser, NSString domainString, bool moreComing)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceBrowser_1didRemoveDomain_1moreComing_1, aNetServiceBrowser !is null ? aNetServiceBrowser.id : null,
                domainString !is null ? domainString.id : null, moreComing);
    }

    public void netServiceBrowser_didRemoveService_moreComing_ (NSNetServiceBrowser aNetServiceBrowser, NSNetService aNetService, bool moreComing)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceBrowser_1didRemoveService_1moreComing_1,
                aNetServiceBrowser !is null ? aNetServiceBrowser.id : null, aNetService !is null ? aNetService.id : null, moreComing);
    }

    public void netServiceBrowserDidStopSearch (NSNetServiceBrowser aNetServiceBrowser)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceBrowserDidStopSearch_1, aNetServiceBrowser !is null ? aNetServiceBrowser.id : null);
    }

    public void netServiceBrowserWillSearch (NSNetServiceBrowser aNetServiceBrowser)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceBrowserWillSearch_1, aNetServiceBrowser !is null ? aNetServiceBrowser.id : null);
    }

    public void netServiceDidPublish (NSNetService sender)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceDidPublish_1, sender !is null ? sender.id : null);
    }

    public void netServiceDidResolveAddress (NSNetService sender)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceDidResolveAddress_1, sender !is null ? sender.id : null);
    }

    public void netServiceDidStop (NSNetService sender)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceDidStop_1, sender !is null ? sender.id : null);
    }

    public void netServiceWillPublish (NSNetService sender)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceWillPublish_1, sender !is null ? sender.id : null);
    }

    public void netServiceWillResolve (NSNetService sender)
    {
        OS.objc_msgSend(this.id, OS.sel_netServiceWillResolve_1, sender !is null ? sender.id : null);
    }

    //public static id new() {
    //  objc.id result = OS.objc_msgSend(OS.class_NSObject, OS.sel_new);
    //  return result !is null ? new id(result) : null;
    //}

    public id newScriptingObjectOfClass (objc.Class objectClass, NSString key, id contentsValue, NSDictionary properties)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_newScriptingObjectOfClass_1forValueForKey_1withContentsValue_1properties_1, objectClass,
                key !is null ? key.id : null, contentsValue !is null ? contentsValue.id : null, properties !is null ? properties.id : null);
        return result !is null ? new id(result) : null;
    }

    public NSScriptObjectSpecifier objectSpecifier ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_objectSpecifier);
        return result !is null ? new NSScriptObjectSpecifier(result) : null;
    }

    public void* observationInfo ()
    {
        return cast(void*) OS.objc_msgSend(this.id, OS.sel_observationInfo);
    }

    public void observeValueForKeyPath (NSString keyPath, id object, NSDictionary change, void* context)
    {
        OS.objc_msgSend(this.id, OS.sel_observeValueForKeyPath_1ofObject_1change_1context_1, keyPath !is null ? keyPath.id : null,
                object !is null ? object.id : null, change !is null ? change.id : null, context);
    }

    public void parser_didEndElement_namespaceURI_qualifiedName_ (NSXMLParser parser, NSString elementName, NSString namespaceURI, NSString qName)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1didEndElement_1namespaceURI_1qualifiedName_1, parser !is null ? parser.id : null,
                elementName !is null ? elementName.id : null, namespaceURI !is null ? namespaceURI.id : null, qName !is null ? qName.id : null);
    }

    public void parser_didEndMappingPrefix_ (NSXMLParser parser, NSString prefix)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1didEndMappingPrefix_1, parser !is null ? parser.id : null, prefix !is null ? prefix.id : null);
    }

    public void parser_didStartElement_namespaceURI_qualifiedName_attributes_ (NSXMLParser parser, NSString elementName, NSString namespaceURI,
            NSString qName, NSDictionary attributeDict)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1didStartElement_1namespaceURI_1qualifiedName_1attributes_1, parser !is null ? parser.id : null,
                elementName !is null ? elementName.id : null, namespaceURI !is null ? namespaceURI.id : null, qName !is null ? qName.id : null,
                attributeDict !is null ? attributeDict.id : null);
    }

    public void parser_didStartMappingPrefix_toURI_ (NSXMLParser parser, NSString prefix, NSString namespaceURI)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1didStartMappingPrefix_1toURI_1, parser !is null ? parser.id : null,
                prefix !is null ? prefix.id : null, namespaceURI !is null ? namespaceURI.id : null);
    }

    public void parser_foundAttributeDeclarationWithName_forElement_type_defaultValue_ (NSXMLParser parser, NSString attributeName,
            NSString elementName, NSString type, NSString defaultValue)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundAttributeDeclarationWithName_1forElement_1type_1defaultValue_1,
                parser !is null ? parser.id : null, attributeName !is null ? attributeName.id : null, elementName !is null ? elementName.id : null,
                type !is null ? type.id : null, defaultValue !is null ? defaultValue.id : null);
    }

    public void parser_foundCDATA_ (NSXMLParser parser, NSData CDATABlock)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundCDATA_1, parser !is null ? parser.id : null, CDATABlock !is null ? CDATABlock.id : null);
    }

    public void parser_foundCharacters_ (NSXMLParser parser, NSString string)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundCharacters_1, parser !is null ? parser.id : null, string !is null ? string.id : null);
    }

    public void parser_foundComment_ (NSXMLParser parser, NSString comment)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundComment_1, parser !is null ? parser.id : null, comment !is null ? comment.id : null);
    }

    public void parser_foundElementDeclarationWithName_model_ (NSXMLParser parser, NSString elementName, NSString model)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundElementDeclarationWithName_1model_1, parser !is null ? parser.id : null,
                elementName !is null ? elementName.id : null, model !is null ? model.id : null);
    }

    public void parser_foundExternalEntityDeclarationWithName_publicID_systemID_ (NSXMLParser parser, NSString name, NSString publicID,
            NSString systemID)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundExternalEntityDeclarationWithName_1publicID_1systemID_1, parser !is null ? parser.id : null,
                name !is null ? name.id : null, publicID !is null ? publicID.id : null, systemID !is null ? systemID.id : null);
    }

    public void parser_foundIgnorableWhitespace_ (NSXMLParser parser, NSString whitespaceString)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundIgnorableWhitespace_1, parser !is null ? parser.id : null,
                whitespaceString !is null ? whitespaceString.id : null);
    }

    public void parser_foundInternalEntityDeclarationWithName_value_ (NSXMLParser parser, NSString name, NSString value)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundInternalEntityDeclarationWithName_1value_1, parser !is null ? parser.id : null,
                name !is null ? name.id : null, value !is null ? value.id : null);
    }

    public void parser_foundNotationDeclarationWithName_publicID_systemID_ (NSXMLParser parser, NSString name, NSString publicID, NSString systemID)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundNotationDeclarationWithName_1publicID_1systemID_1, parser !is null ? parser.id : null,
                name !is null ? name.id : null, publicID !is null ? publicID.id : null, systemID !is null ? systemID.id : null);
    }

    public void parser_foundProcessingInstructionWithTarget_data_ (NSXMLParser parser, NSString target, NSString data)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundProcessingInstructionWithTarget_1data_1, parser !is null ? parser.id : null,
                target !is null ? target.id : null, data !is null ? data.id : null);
    }

    public void parser_foundUnparsedEntityDeclarationWithName_publicID_systemID_notationName_ (NSXMLParser parser, NSString name, NSString publicID,
            NSString systemID, NSString notationName)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1foundUnparsedEntityDeclarationWithName_1publicID_1systemID_1notationName_1,
                parser !is null ? parser.id : null, name !is null ? name.id : null, publicID !is null ? publicID.id : null,
                systemID !is null ? systemID.id : null, notationName !is null ? notationName.id : null);
    }

    public void parser_parseErrorOccurred_ (NSXMLParser parser, NSError parseError)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1parseErrorOccurred_1, parser !is null ? parser.id : null, parseError !is null ? parseError.id : null);
    }

    public NSData parser_resolveExternalEntityName_systemID_ (NSXMLParser parser, NSString name, NSString systemID)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_parser_1resolveExternalEntityName_1systemID_1, parser !is null ? parser.id : null,
                name !is null ? name.id : null, systemID !is null ? systemID.id : null);
        return result !is null ? new NSData(result) : null;
    }

    public void parser_validationErrorOccurred_ (NSXMLParser parser, NSError validationError)
    {
        OS.objc_msgSend(this.id, OS.sel_parser_1validationErrorOccurred_1, parser !is null ? parser.id : null,
                validationError !is null ? validationError.id : null);
    }

    public void parserDidEndDocument (NSXMLParser parser)
    {
        OS.objc_msgSend(this.id, OS.sel_parserDidEndDocument_1, parser !is null ? parser.id : null);
    }

    public void parserDidStartDocument (NSXMLParser parser)
    {
        OS.objc_msgSend(this.id, OS.sel_parserDidStartDocument_1, parser !is null ? parser.id : null);
    }

    public id performSelector_ (objc.SEL aSelector)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_performSelector_1, aSelector);
        return result !is null ? new id(result) : null;
    }

    public void performSelector_onThread_withObject_waitUntilDone_ (objc.SEL aSelector, NSThread thr, id arg, bool wait)
    {
        OS.objc_msgSend(this.id, OS.sel_performSelector_1onThread_1withObject_1waitUntilDone_1, aSelector, thr !is null ? thr.id : null,
                arg !is null ? arg.id : null, wait);
    }

    public void performSelector_onThread_withObject_waitUntilDone_modes_ (objc.SEL aSelector, NSThread thr, id arg, bool wait, NSArray array)
    {
        OS.objc_msgSend(this.id, OS.sel_performSelector_1onThread_1withObject_1waitUntilDone_1modes_1, aSelector, thr !is null ? thr.id : null,
                arg !is null ? arg.id : null, wait, array !is null ? array.id : null);
    }

    public id performSelector_withObject_ (objc.SEL aSelector, id object)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_performSelector_1withObject_1, aSelector, object !is null ? object.id : null);
        return result !is null ? new id(result) : null;
    }

    public void performSelector_withObject_afterDelay_ (objc.SEL aSelector, id anArgument, NSTimeInterval delay)
    {
        OS.objc_msgSend(this.id, OS.sel_performSelector_1withObject_1afterDelay_1, aSelector, anArgument !is null ? anArgument.id : null, delay);
    }

    public void performSelector_withObject_afterDelay_inModes_ (objc.SEL aSelector, id anArgument, NSTimeInterval delay, NSArray modes)
    {
        OS.objc_msgSend(this.id, OS.sel_performSelector_1withObject_1afterDelay_1inModes_1, aSelector, anArgument !is null ? anArgument.id : null,
                delay, modes !is null ? modes.id : null);
    }

    public id performSelector_withObject_withObject_ (objc.SEL aSelector, id object1, id object2)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_performSelector_1withObject_1withObject_1, aSelector, object1 !is null ? object1.id : null,
                object2 !is null ? object2.id : null);
        return result !is null ? new id(result) : null;
    }

    public void performSelectorInBackground (objc.SEL aSelector, id arg)
    {
        OS.objc_msgSend(this.id, OS.sel_performSelectorInBackground_1withObject_1, aSelector, arg !is null ? arg.id : null);
    }

    public void performSelectorOnMainThread_withObject_waitUntilDone_ (objc.SEL aSelector, id arg, bool wait)
    {
        OS.objc_msgSend(this.id, OS.sel_performSelectorOnMainThread_1withObject_1waitUntilDone_1, aSelector, arg !is null ? arg.id : null, wait);
    }

    public void performSelectorOnMainThread_withObject_waitUntilDone_modes_ (objc.SEL aSelector, id arg, bool wait, NSArray array)
    {
        OS.objc_msgSend(this.id, OS.sel_performSelectorOnMainThread_1withObject_1waitUntilDone_1modes_1, aSelector, arg !is null ? arg.id : null,
                wait, array !is null ? array.id : null);
    }

    public static void poseAsClass (objc.Class aClass)
    {
        OS.objc_msgSend(OS.class_NSObject, OS.sel_poseAsClass_1, aClass);
    }

    public void release ()
    {
        OS.objc_msgSend(this.id, OS.sel_release);
    }

    public void removeObserver (NSObject observer, NSString keyPath)
    {
        OS.objc_msgSend(this.id, OS.sel_removeObserver_1forKeyPath_1, observer !is null ? observer.id : null, keyPath !is null ? keyPath.id : null);
    }

    public void removeObserver (NSObject observer)
    {
        OS.objc_msgSend(this.id, OS.sel_removeObserver_1, observer !is null ? observer.id : null);
    }

    public void removeValueAtIndex (NSUInteger index, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_removeValueAtIndex_1fromPropertyWithKey_1, index, key !is null ? key.id : null);
    }

    public void replaceValueAtIndex (NSUInteger index, NSString key, id value)
    {
        OS.objc_msgSend(this.id, OS.sel_replaceValueAtIndex_1inPropertyWithKey_1withValue_1, index, key !is null ? key.id : null,
                value !is null ? value.id : null);
    }

    public id replacementObjectForArchiver (NSArchiver archiver)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_replacementObjectForArchiver_1, archiver !is null ? archiver.id : null);
        return result !is null ? new id(result) : null;
    }

    public id replacementObjectForCoder (NSCoder aCoder)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_replacementObjectForCoder_1, aCoder !is null ? aCoder.id : null);
        return result !is null ? new id(result) : null;
    }

    public id replacementObjectForKeyedArchiver (NSKeyedArchiver archiver)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_replacementObjectForKeyedArchiver_1, archiver !is null ? archiver.id : null);
        return result !is null ? new id(result) : null;
    }

    public id replacementObjectForPortCoder (NSPortCoder coder)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_replacementObjectForPortCoder_1, coder !is null ? coder.id : null);
        return result !is null ? new id(result) : null;
    }

    public static bool resolveClassMethod (objc.SEL sel)
    {
        return OS.objc_msgSend(OS.class_NSObject, OS.sel_resolveClassMethod_1, sel) !is null;
    }

    public static bool resolveInstanceMethod (objc.SEL sel)
    {
        return OS.objc_msgSend(OS.class_NSObject, OS.sel_resolveInstanceMethod_1, sel) !is null;
    }

    public bool respondsToSelector (objc.SEL aSelector)
    {
        return OS.objc_msgSend(this.id, OS.sel_respondsToSelector_1, aSelector) !is null;
    }

    public id retain ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_retain);
        return result !is null ? new id(result) : null;
    }

    public NSUInteger retainCount ()
    {
        return cast(NSUInteger) OS.objc_msgSend(this.id, OS.sel_retainCount);
    }

    public NSRoundingMode roundingMode ()
    {
        return cast(NSRoundingMode) OS.objc_msgSend(this.id, OS.sel_roundingMode);
    }

    public short scale ()
    {
        return cast(short) OS.objc_msgSend(this.id, OS.sel_scale);
    }

    public bool scriptingBeginsWith (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_scriptingBeginsWith_1, object !is null ? object.id : null) !is null;
    }

    public bool scriptingContains (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_scriptingContains_1, object !is null ? object.id : null) !is null;
    }

    public bool scriptingEndsWith (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_scriptingEndsWith_1, object !is null ? object.id : null) !is null;
    }

    public bool scriptingIsEqualTo (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_scriptingIsEqualTo_1, object !is null ? object.id : null) !is null;
    }

    public bool scriptingIsGreaterThan (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_scriptingIsGreaterThan_1, object !is null ? object.id : null) !is null;
    }

    public bool scriptingIsGreaterThanOrEqualTo (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_scriptingIsGreaterThanOrEqualTo_1, object !is null ? object.id : null) !is null;
    }

    public bool scriptingIsLessThan (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_scriptingIsLessThan_1, object !is null ? object.id : null) !is null;
    }

    public bool scriptingIsLessThanOrEqualTo (id object)
    {
        return OS.objc_msgSend(this.id, OS.sel_scriptingIsLessThanOrEqualTo_1, object !is null ? object.id : null) !is null;
    }

    public NSDictionary scriptingProperties ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_scriptingProperties);
        return result !is null ? new NSDictionary(result) : null;
    }

    public id scriptingValueForSpecifier (NSScriptObjectSpecifier objectSpecifier)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_scriptingValueForSpecifier_1, objectSpecifier !is null ? objectSpecifier.id : null);
        return result !is null ? new id(result) : null;
    }

    public id self ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_self);
        return result !is null ? new id(result) : null;
    }

    public static void setKeys (NSArray keys, NSString dependentKey)
    {
        OS.objc_msgSend(OS.class_NSObject, OS.sel_setKeys_1triggerChangeNotificationsForDependentKey_1, keys !is null ? keys.id : null,
                dependentKey !is null ? dependentKey.id : null);
    }

    public void setNilValueForKey (NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_setNilValueForKey_1, key !is null ? key.id : null);
    }

    public void setObservationInfo (void* observationInfo)
    {
        OS.objc_msgSend(this.id, OS.sel_setObservationInfo_1, observationInfo);
    }

    public void setScriptingProperties (NSDictionary properties)
    {
        OS.objc_msgSend(this.id, OS.sel_setScriptingProperties_1, properties !is null ? properties.id : null);
    }

    public void setValue_forKey_ (id value, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_setValue_1forKey_1, value !is null ? value.id : null, key !is null ? key.id : null);
    }

    public void setValue_forKeyPath_ (id value, NSString keyPath)
    {
        OS.objc_msgSend(this.id, OS.sel_setValue_1forKeyPath_1, value !is null ? value.id : null, keyPath !is null ? keyPath.id : null);
    }

    public void setValue_forUndefinedKey_ (id value, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_setValue_1forUndefinedKey_1, value !is null ? value.id : null, key !is null ? key.id : null);
    }

    public void setValuesForKeysWithDictionary (NSDictionary keyedValues)
    {
        OS.objc_msgSend(this.id, OS.sel_setValuesForKeysWithDictionary_1, keyedValues !is null ? keyedValues.id : null);
    }

    public static void setVersion (NSInteger aVersion)
    {
        OS.objc_msgSend(OS.class_NSObject, OS.sel_setVersion_1, aVersion);
    }

    public NSRange spellServer_checkGrammarInString_language_details_ (NSSpellServer sender, NSString stringToCheck, NSString language, objc.id** details)
    {
        NSRange result;
        OS.objc_msgSend_stret(result, this.id, OS.sel_spellServer_1checkGrammarInString_1language_1details_1, sender !is null ? sender.id : null,
                stringToCheck !is null ? stringToCheck.id : null, language !is null ? language.id : null, details);
        return result;
    }

    public void spellServer_didForgetWord_inLanguage_ (NSSpellServer sender, NSString word, NSString language)
    {
        OS.objc_msgSend(this.id, OS.sel_spellServer_1didForgetWord_1inLanguage_1, sender !is null ? sender.id : null, word !is null ? word.id : null,
                language !is null ? language.id : null);
    }

    public void spellServer_didLearnWord_inLanguage_ (NSSpellServer sender, NSString word, NSString language)
    {
        OS.objc_msgSend(this.id, OS.sel_spellServer_1didLearnWord_1inLanguage_1, sender !is null ? sender.id : null, word !is null ? word.id : null,
                language !is null ? language.id : null);
    }

    public NSRange spellServer_findMisspelledWordInString_language_wordCount_countOnly_ (NSSpellServer sender, NSString stringToCheck,
            NSString language, int* wordCount, bool countOnly)
    {
        NSRange result;
        OS.objc_msgSend_stret(result, this.id, OS.sel_spellServer_1findMisspelledWordInString_1language_1wordCount_1countOnly_1,
                sender !is null ? sender.id : null, stringToCheck !is null ? stringToCheck.id : null, language !is null ? language.id : null,
                wordCount, countOnly);
        return result;
    }

    public NSArray spellServer_suggestCompletionsForPartialWordRange_inString_language_ (NSSpellServer sender, NSRange range, NSString string,
            NSString language)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_spellServer_1suggestCompletionsForPartialWordRange_1inString_1language_1,
                sender !is null ? sender.id : null, range, string !is null ? string.id : null, language !is null ? language.id : null);
        return result !is null ? new NSArray(result) : null;
    }

    public NSArray spellServer_suggestGuessesForWord_inLanguage_ (NSSpellServer sender, NSString word, NSString language)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_spellServer_1suggestGuessesForWord_1inLanguage_1, sender !is null ? sender.id : null,
                word !is null ? word.id : null, language !is null ? language.id : null);
        return result !is null ? new NSArray(result) : null;
    }

    public id storedValueForKey (NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_storedValueForKey_1, key !is null ? key.id : null);
        return result !is null ? new id(result) : null;
    }

    public void stream (NSStream aStream, NSStreamEvent eventCode)
    {
        OS.objc_msgSend(this.id, OS.sel_stream_1handleEvent_1, aStream !is null ? aStream.id : null, eventCode);
    }

    public static objc.Class static_superclass ()
    {
        return cast(objc.Class) OS.objc_msgSend(OS.class_NSObject, OS.sel_superclass);
    }

    public objc.Class superclass ()
    {
        return cast(objc.Class) OS.objc_msgSend(this.id, OS.sel_superclass);
    }

    public void takeStoredValue (id value, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_takeStoredValue_1forKey_1, value !is null ? value.id : null, key !is null ? key.id : null);
    }

    public void takeValue_forKey_ (id value, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_takeValue_1forKey_1, value !is null ? value.id : null, key !is null ? key.id : null);
    }

    public void takeValue_forKeyPath_ (id value, NSString keyPath)
    {
        OS.objc_msgSend(this.id, OS.sel_takeValue_1forKeyPath_1, value !is null ? value.id : null, keyPath !is null ? keyPath.id : null);
    }

    public void takeValuesFromDictionary (NSDictionary properties)
    {
        OS.objc_msgSend(this.id, OS.sel_takeValuesFromDictionary_1, properties !is null ? properties.id : null);
    }

    public NSArray toManyRelationshipKeys ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_toManyRelationshipKeys);
        return result !is null ? new NSArray(result) : null;
    }

    public NSArray toOneRelationshipKeys ()
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_toOneRelationshipKeys);
        return result !is null ? new NSArray(result) : null;
    }

    public void unableToSetNilForKey (NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_unableToSetNilForKey_1, key !is null ? key.id : null);
    }

    public objc.Class unarchiver_cannotDecodeObjectOfClassName_originalClasses_ (NSKeyedUnarchiver unarchiver, NSString name, NSArray classNames)
    {
        return cast(objc.Class) OS.objc_msgSend(this.id, OS.sel_unarchiver_1cannotDecodeObjectOfClassName_1originalClasses_1,
                unarchiver !is null ? unarchiver.id : null, name !is null ? name.id : null, classNames !is null ? classNames.id : null);
    }

    public id unarchiver_didDecodeObject_ (NSKeyedUnarchiver unarchiver, id object)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_unarchiver_1didDecodeObject_1, unarchiver !is null ? unarchiver.id : null,
                object !is null ? object.id : null);
        return result !is null ? new id(result) : null;
    }

    public void unarchiver_willReplaceObject_withObject_ (NSKeyedUnarchiver unarchiver, id object, id newObject)
    {
        OS.objc_msgSend(this.id, OS.sel_unarchiver_1willReplaceObject_1withObject_1, unarchiver !is null ? unarchiver.id : null,
                object !is null ? object.id : null, newObject !is null ? newObject.id : null);
    }

    public void unarchiverDidFinish (NSKeyedUnarchiver unarchiver)
    {
        OS.objc_msgSend(this.id, OS.sel_unarchiverDidFinish_1, unarchiver !is null ? unarchiver.id : null);
    }

    public void unarchiverWillFinish (NSKeyedUnarchiver unarchiver)
    {
        OS.objc_msgSend(this.id, OS.sel_unarchiverWillFinish_1, unarchiver !is null ? unarchiver.id : null);
    }

    public void unlock ()
    {
        OS.objc_msgSend(this.id, OS.sel_unlock);
    }

    public void useCredential (NSURLCredential credential, NSURLAuthenticationChallenge challenge)
    {
        OS.objc_msgSend(this.id, OS.sel_useCredential_1forAuthenticationChallenge_1, credential !is null ? credential.id : null,
                challenge !is null ? challenge.id : null);
    }

    public static bool useStoredAccessor ()
    {
        return OS.objc_msgSend(OS.class_NSObject, OS.sel_useStoredAccessor) !is null;
    }

    public bool validateValue_forKey_error_ (objc.id* ioValue, NSString inKey, objc.id** outError)
    {
        return OS.objc_msgSend(this.id, OS.sel_validateValue_1forKey_1error_1, ioValue, inKey !is null ? inKey.id : null, outError) !is null;
    }

    public bool validateValue_forKeyPath_error_ (objc.id* ioValue, NSString inKeyPath, objc.id** outError)
    {
        return OS.objc_msgSend(this.id, OS.sel_validateValue_1forKeyPath_1error_1, ioValue, inKeyPath !is null ? inKeyPath.id : null, outError) !is null;
    }

    public id valueAtIndex (NSUInteger index, NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_valueAtIndex_1inPropertyWithKey_1, index, key !is null ? key.id : null);
        return result !is null ? new id(result) : null;
    }

    public id valueForKey (NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_valueForKey_1, key !is null ? key.id : null);
        return result !is null ? new id(result) : null;
    }

    public id valueForKeyPath (NSString keyPath)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_valueForKeyPath_1, keyPath !is null ? keyPath.id : null);
        return result !is null ? new id(result) : null;
    }

    public id valueForUndefinedKey (NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_valueForUndefinedKey_1, key !is null ? key.id : null);
        return result !is null ? new id(result) : null;
    }

    public id valueWithName (NSString name, NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_valueWithName_1inPropertyWithKey_1, name !is null ? name.id : null,
                key !is null ? key.id : null);
        return result !is null ? new id(result) : null;
    }

    public id valueWithUniqueID (id uniqueID, NSString key)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_valueWithUniqueID_1inPropertyWithKey_1, uniqueID !is null ? uniqueID.id : null,
                key !is null ? key.id : null);
        return result !is null ? new id(result) : null;
    }

    public NSDictionary valuesForKeys (NSArray keys)
    {
        objc.id result = OS.objc_msgSend(this.id, OS.sel_valuesForKeys_1, keys !is null ? keys.id : null);
        return result !is null ? new NSDictionary(result) : null;
    }

    public static NSInteger versionn ()
    {
        return cast(NSInteger) OS.objc_msgSend(OS.class_NSObject, OS.sel_version);
    }

    public void willChange (NSKeyValueChange changeKind, NSIndexSet indexes, NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_willChange_1valuesAtIndexes_1forKey_1, changeKind, indexes !is null ? indexes.id : null,
                key !is null ? key.id : null);
    }

    public void willChangeValueForKey_ (NSString key)
    {
        OS.objc_msgSend(this.id, OS.sel_willChangeValueForKey_1, key !is null ? key.id : null);
    }

    public void willChangeValueForKey_withSetMutation_usingObjects_ (NSString key, NSKeyValueSetMutationKind mutationKind, NSSet objects)
    {
        OS.objc_msgSend(this.id, OS.sel_willChangeValueForKey_1withSetMutation_1usingObjects_1, key !is null ? key.id : null, mutationKind,
                objects !is null ? objects.id : null);
    }

    public NSZone* zone ()
    {
        return cast(NSZone*) OS.objc_msgSend(this.id, OS.sel_zone);
    }

}