docs: protected ScpController getScpController() {
      String scpOptions = ScpContext.scpOptions(config);
      String scpConnection = ScpContext.scpConnection(config);
      String sshOptions = ScpContext.sshOptions(config);
      String sshConnection = ScpContext.sshConnection(config);
  
      if (scpOptions == null) {
        throw new RuntimeException("Missing "
            + ScpContext.HERON_UPLOADER_SCP_OPTIONS + " config value");
      }
      if (scpConnection == null) {
        throw new RuntimeException("Missing "
            + ScpContext.HERON_UPLOADER_SCP_CONNECTION + " config value");
      }
  
      if (sshOptions == null) {
        throw new RuntimeException("Missing "
            + ScpContext.HERON_UPLOADER_SSH_OPTIONS + " config value");
      }
      if (sshConnection == null) {
        throw new RuntimeException("Missing "
            + ScpContext.HERON_UPLOADER_SSH_CONNECTION + " config value");
      }
  
      return new ScpController(
          scpOptions, scpConnection, sshOptions, sshConnection, Context.verbose(config));
    }