code: public Traverson startWith(final HalRepresentation resource) {
          this.startWith = null;
          this.lastResult = singletonList(requireNonNull(resource));
          Optional<Link> self = resource.getLinks().getLinkBy("self");
          if (self.isPresent()) {
                  this.contextUrl = linkToUrl(self.get());
          } else {
              resource
                      .getLinks()
                      .stream()
                      .filter(link -> !link.getHref().matches("http.*//.*"))
                      .findAny()
                      .ifPresent(link -> {throw new IllegalArgumentException("Unable to construct Traverson from HalRepresentation w/o self link but containing relative links. Please try Traverson.startWith(URL, HalRepresentation)");});
          }
          return this;
      }
docs: Start traversal at the given HAL resource.
  
  <p>
  It is expected, that the HalRepresentation has an absolute 'self' link, or that all links to other
  resources are absolute links. If this is not assured, {@link #startWith(URL, HalRepresentation)} must
  be used, so relative links can be resolved.
  </p>
  
  @param resource the initial HAL resource.
  @return Traverson initialized with the specified {@link HalRepresentation}.