public static VirtualMachine LaunchInternal (ITargetProcess p, ProcessStartInfo info, Socket socket) {
Socket accepted = null;
try {
accepted = socket.Accept ();
} catch (Exception) {
throw;
}
Connection conn = new Connection (accepted);
VirtualMachine vm = new VirtualMachine (p, conn);
if (info.RedirectStandardOutput)
vm.StandardOutput = p.StandardOutput;
if (info.RedirectStandardError)
vm.StandardError = p.StandardError;
conn.EventHandler = new EventHandler (vm);
vm.connect ();
return vm;
}