public virtual void Run()
 {
     error = null;
     root  = null;
     try
     {
         DecompilerContext.SetCurrentContext(parentContext);
         root = CodeToJava(method, methodDescriptor, varProc);
     }
     catch (Exception t)
     {
         error = t;
     }
     finally
     {
         DecompilerContext.SetCurrentContext(null);
     }
     finished = true;
     lock (Lock)
     {
         Monitor.PulseAll(Lock);
     }
 }