public void HandleClassPrepare(JvmEventsService.JvmVirtualMachineRemoteHandle virtualMachine, JvmEventsService.JvmThreadRemoteHandle thread, JvmEventsService.JvmClassRemoteHandle @class)
            {
                // try to get debugging information from the class
                string sourceName;

                JvmToolsService.jvmtiError error = Program.ToolsService.GetSourceFileName(out sourceName, virtualMachine, @class);

                JvmToolsService.JvmMethodRemoteHandle[] methods;
                error = Program.ToolsService.GetClassMethods(out methods, virtualMachine, @class);

                foreach (var method in methods)
                {
                    JvmToolsService.JvmLineNumberEntry[] lineNumbers;
                    error = Program.ToolsService.GetLineNumberTable(out lineNumbers, virtualMachine, method);
                }
            }
            public void HandleClassLoad(JvmEventsService.JvmVirtualMachineRemoteHandle virtualMachine, JvmEventsService.JvmThreadRemoteHandle threadHandle, JvmEventsService.JvmClassRemoteHandle @class)
            {
                // The format of the message created by the .NET debugger is this:
                // 'devenv.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.Windows.Forms\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Windows.Forms.dll'
                string programName = Program.GetName();
                string debuggerName;
                Guid   debuggerGuid;

                ErrorHandler.ThrowOnFailure(Program.GetEngineInfo(out debuggerName, out debuggerGuid));

                string signature;
                string generic;
                var    result = Program.ToolsService.GetClassSignature(out signature, out generic, virtualMachine, @class);

                JavaDebugThread thread = null;

                if (threadHandle.Handle != 0)
                {
                    int hashCode;
                    result = Program.ToolsService.GetObjectHashCode(out hashCode, virtualMachine, threadHandle);
                    Program._threads.TryGetValue(hashCode, out thread);
                }

                string               message = string.Format("'{0}' ({1}): Loaded class '{2}'" + Environment.NewLine, programName, debuggerName, signature);
                DebugEvent           @event  = new DebugOutputStringEvent(enum_EVENTATTRIBUTES.EVENT_SYNCHRONOUS, message);
                Guid                 guid    = typeof(IDebugOutputStringEvent2).GUID;
                enum_EVENTATTRIBUTES attrib  = @event.GetAttributes();

                Program.Callback.Event(Program.DebugEngine, Program.Process, Program, thread, @event, ref guid, (uint)attrib);
            }