docs: @Override
      public TestResult invoke(final TestMethodExecutor testMethodExecutor) {
  
          assert testMethodExecutor != null : "Test method executor is required";
  
          // Build the String request according to the wire protocol
          final StringBuilder builder = new StringBuilder();
          builder.append(WireProtocol.COMMAND_TEST_PREFIX);
          builder.append(testMethodExecutor.getInstance().getClass().getName());
          builder.append(SPACE);
          builder.append(testMethodExecutor.getMethod().getName());
          builder.append(WireProtocol.COMMAND_EOF_DELIMITER);
          final String testCommand = builder.toString();
          final PrintWriter writer = this.context.getWriter();
  
          // Request
          writer.write(testCommand);
          writer.flush();
  
          try {
              // Read response
              final ObjectInputStream response = new ObjectInputStream(
                      new NoCloseInputStream(context.getSocketInstream()));
              final TestResult testResult = (TestResult) response.readObject();
              response.close();
              return testResult;
  
          } catch (final IOException ioe) {
              throw new RuntimeException("Could not get test results", ioe);
          } catch (final ClassNotFoundException cnfe) {
              throw new RuntimeException("test result not on the client classpath", cnfe);
          }
      }