static unsafe NPError destroy(NPP* instance,NPSavedData** save)
        {
            instances[instance->pdata].Key.Dispose();
            instances.Remove(instance->pdata);
            instance->pdata	= IntPtr.Zero;

            File.AppendAllText(logfile,"Destroy " + instance->pdata + "\n");

            return NPError.NO_ERROR;
        }
        static unsafe NPError destroystream(NPP* instance,NPStream* stream,NPReason reason)
        {
            File.AppendAllText(logfile,"destroystream\n");

            return NPError.NO_ERROR;
        }
 static unsafe void asfile(NPP* instance,NPStream* stream,sbyte* fname)
 {
     File.AppendAllText(logfile,"asfile\n");
 }
        static unsafe int write(NPP* instance,NPStream* stream,int offset,int len,void* buffer)
        {
            File.AppendAllText(logfile,"write\n");

            return len;
        }
        static unsafe int writeready(NPP* instance,NPStream* stream)
        {
            File.AppendAllText(logfile,"writeready\n");

            return 0xFFFF;
        }
        static unsafe NPError setwindow(NPP* instance,NPWindow* window)
        {
            if(window->window != IntPtr.Zero)
                ImportUser32.SetWndProc(window->window,instances[instance->pdata].Value);

            return NPError.NO_ERROR;
        }
 static unsafe void urlnotify(NPP* instance,sbyte* URL,NPReason reason,void* notifyData)
 {
     File.AppendAllText(logfile,"urlnotify\n");
 }
        static unsafe NPError setvalue(NPP* instance,NPNVariable variable,void* value)
        {
            File.AppendAllText(logfile,"setvalue " + variable + " \n");

            return instances[instance->pdata].Key.setvalue(variable,value);
        }
 static unsafe void print(NPP* instance,NPPrint* platformPrint)
 {
     File.AppendAllText(logfile,"print\n");
 }
        static unsafe NPError newstream(NPP* instance,sbyte* mimeType,NPStream* stream,byte seekable,ushort* stype)
        {
            File.AppendAllText(logfile,"newstream\n");

            return NPError.NO_ERROR;
        }
        static unsafe NPError newp(sbyte* mimeType,NPP* instance,Mode mode,short argc,sbyte** argn,sbyte** argv,NPSavedData* saved)
        {
            var target	= new GLInstance();
            instance->pdata	= new IntPtr(target.GetHashCode());
            instances.Add(instance->pdata,new KeyValuePair<GLInstance,WindowProc>(target,target.WndProc));

            File.AppendAllText(logfile,"New " + instance->pdata + "\n");

            return NPError.NO_ERROR;
        }
        static unsafe short handleEvent(NPP* instance,void* eventHandler)
        {
            File.AppendAllText(logfile,"eventHandle\n");

            return 0;
        }