code: public final boolean execute() throws Exception {
  		boolean finished = false;
  		mainThread.start();
  		mainThread.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
  			@Override
  			public void uncaughtException(final Thread arg0, final Throwable arg1) {
  				LOG.error("Uncaught exception in {}: {}", arg0.getName(), arg1.getClass());
  				testError = arg1;
  			}
  		});
  		LOG.debug("Warte: " + timeout);
  		mainThread.join(timeout);
  		if (mainThread.isAlive()) {
  			mainThread.setFinished(true);
  			LOG.error("Test " + type + " " + mainThread.getName() + " timed out!");
  			for (int i = 0; i < 5; i++) {
  				mainThread.interrupt();
  				// asure, that the test does not catch the interrupt state itself
  				Thread.sleep(5);
  			}
  		}
  		else {
  			finished = true;
  		}
  		mainThread.join(1000); // TODO If this time is shortened, test
  		if (mainThread.isAlive()) {
  			LOG.error("Test timed out and was not able to save his data after 10 seconds - is killed hard now.");
  			mainThread.stop();
  		}
  		if (testError != null) {
  			LOG.trace("Test error != null");
  			if (testError instanceof Exception) {
  				throw (Exception) testError;
  			} else if (testError instanceof Error) {
  				throw (Error) testError;
  			} else {
  				LOG.error("Unexpected behaviour");
  				testError.printStackTrace();
  			}
  		}
  		return finished;
  	}
docs: Executes the TimeBoundedExecution.
  
  @throws Exception
  Thrown if an error occurs