docs: private static Map<String, HalFormsTemplate> findTemplates(RepresentationModel<?> resource) {
  
  		if (!resource.hasLink(IanaLinkRelations.SELF)) {
  			return Collections.emptyMap();
  		}
  
  		Map<String, HalFormsTemplate> templates = new HashMap<>();
  		List<Affordance> affordances = resource.getLink(IanaLinkRelations.SELF).map(Link::getAffordances)
  				.orElse(Collections.emptyList());
  
  		affordances.stream() //
  				.map(it -> it.getAffordanceModel(MediaTypes.HAL_FORMS_JSON)) //
  				.map(HalFormsAffordanceModel.class::cast) //
  				.filter(it -> !it.hasHttpMethod(HttpMethod.GET)) //
  				.peek(it -> validate(resource, it)) //
  				.forEach(it -> {
  
  					HalFormsTemplate template = HalFormsTemplate.forMethod(it.getHttpMethod()) //
  							.withProperties(it.getInputProperties());
  
  					/*
  					 * First template in HAL-FORMS is "default".
  					 */
  					templates.put(templates.isEmpty() ? "default" : it.getName(), template);
  				});
  
  		return templates;
  	}