BinaryStackTrace stackTrace = StackTraceUtil.translateStackTrace(logMessage, Emulator.this.classPath, Emulator.this.preprocessedSourcePath, Emulator.this.sourceDirs);
BinaryStackTrace stackTrace = StackTraceUtil.translateStackTrace(logMessage, Emulator.this.classPath, Emulator.this.preprocessedSourcePath, Emulator.this.sourceDirs, Emulator.this.environmentProperties);
		public void run() {			StringBuffer log = new StringBuffer( 300 );			log.append(this.header);			int startPos = this.header.length();			int c;						try {				boolean decompilerInstalled = true;				while ((c = this.input.read() ) != -1) {					if (c == '\n') {						String logMessage = log.toString();						this.output.println( logMessage );						log.delete( startPos,  log.length() );						if (decompilerInstalled								&& (logMessage.indexOf('+') != -1) 								&& (logMessage.indexOf("at ") != -1)) {							try {								// this seems to be an error message like								// "   at de.enough.polish.ClassName(+263)"								// so try to use JAD for finding out the source code address:								BinaryStackTrace stackTrace = StackTraceUtil.translateStackTrace(logMessage, Emulator.this.classPath, Emulator.this.preprocessedSourcePath, Emulator.this.sourceDirs);								if (stackTrace != null) {									if (stackTrace.couldBeResolved()) {										this.output.println( this.header + stackTrace.getSourceCodeMessage() );									} else {										this.output.println( this.header + "Decompiled stack-trace: " + stackTrace.getDecompiledCodeSnippet() );									}								}							} catch (DecompilerNotInstalledException e) {								this.output.println("Unable to translate stacktrace: " + e.getMessage() );								decompilerInstalled = false;							}						}					}  else if (c != '\r') {						log.append((char) c);					}				}				this.input.close();			} catch (IOException e) {				e.printStackTrace();				System.out.println("Unable to log: " + e.toString() );			}		}