docs: public static Link valueOf(String element) {
  
  		if (!StringUtils.hasText(element)) {
  			throw new IllegalArgumentException(String.format("Given link header %s is not RFC5988 compliant!", element));
  		}
  
  		Matcher matcher = URI_AND_ATTRIBUTES_PATTERN.matcher(element);
  
  		if (matcher.find()) {
  
  			Map<String, String> attributes = getAttributeMap(matcher.group(2));
  
  			if (!attributes.containsKey("rel")) {
  				throw new IllegalArgumentException("Link does not provide a rel attribute!");
  			}
  
  			Link link = new Link(matcher.group(1), attributes.get("rel"));
  
  			if (attributes.containsKey("hreflang")) {
  				link = link.withHreflang(attributes.get("hreflang"));
  			}
  
  			if (attributes.containsKey("media")) {
  				link = link.withMedia(attributes.get("media"));
  			}
  
  			if (attributes.containsKey("title")) {
  				link = link.withTitle(attributes.get("title"));
  			}
  
  			if (attributes.containsKey("type")) {
  				link = link.withType(attributes.get("type"));
  			}
  
  			if (attributes.containsKey("deprecation")) {
  				link = link.withDeprecation(attributes.get("deprecation"));
  			}
  
  			if (attributes.containsKey("profile")) {
  				link = link.withProfile(attributes.get("profile"));
  			}
  
  			if (attributes.containsKey("name")) {
  				link = link.withName(attributes.get("name"));
  			}
  
  			return link;
  
  		} else {
  			throw new IllegalArgumentException(String.format("Given link header %s is not RFC5988 compliant!", element));
  		}
  	}