private void runTestsOnRemoteMachine(URL baseURL) {
   List<TestRunResult> results = new ArrayList<TestRunResult>();
   try {
     URL fullURL = buildURL(baseURL);
     logger.info("Requesting run on remove machine URL " + baseURL);
     Document documentFromRemoteMachine = hitter.hitURL(fullURL);
     logger.info("Received response from remove machine URL " + baseURL);
     if (isMultipleTestRunResultsResult(documentFromRemoteMachine)) {
       DistributedTestRunResult multiple =
           new DistributedTestRunResultBuilder(configuration).build(documentFromRemoteMachine);
       results.addAll(multiple.getTestRunResults());
     } else {
       TestRunResult single =
           new TestRunResultBuilder(configuration).build(documentFromRemoteMachine);
       results.add(single);
     }
   } catch (IOException e) {
     if (configuration.shouldIgnoreUnresponsiveRemoteMachines())
       logger.info("Ignoring unresponsive machine " + baseURL.toString());
     else {
       logger.info("Remote machine URL is unresponsive: " + baseURL.toString());
       TestRunResult unresponsiveResult = new TestRunResult(baseURL);
       unresponsiveResult.setUnresponsive();
       results.add(unresponsiveResult);
     }
   }
   for (TestRunResult result : results) {
     result.setURL(baseURL);
     //noinspection SynchronizeOnNonFinalField
     synchronized (distributedTestRunResult) {
       distributedTestRunResult.addTestRunResult(result);
     }
   }
 }