anchor.diff:  productLink.setTarget("#!products/details/id/" + selectedProduct.getId() + "/show");
   ----
   
  -This approach is very problematic and should be avoided at all costs. The reason for this is that this approach is very fragile and error-prone. In addition to that, this approach makes it very difficult to refactor the structure of an application's URI fragments. Just imagine what happens when you want to rename the `details` part with `overview` or you need to change the data type of product identifiers from `Long` into a data type which cannot easily be converted into a String with `toString()` (e. g., a custom identifier type). You would have to search your whole application's code to find all spots where a link is assembled manually like this. If you miss just one of these places, you would end up with a dead link in your application.
  -
  -We want to do better. It is our goal to keep the definition of an application's URI fragment structure in one single place so that we can globally change it there. This place is the definition of the application-scoped instance of `UriActionMapperTree`. We want to be able to change an action mapper's name or a URI fragment parameter's name in the construction code of the action mapper tree. We want then to have all application links to be adapted accordingly.
  -
  -The URI action mapper tree allows us to do so easily. We can entrust the task of assembling valid parameterized URI fragments to the action mapper tree. To do so, we need two things:
  -
  -. A reference to the URI action mapper for which we want to create a target link.
  +This approach is very problematic and should be avoided at all costs, since it is very fragile and error-prone. This approach makes it very difficult to refactor the structure of an application's URI fragments. Just imagine what happens when you want to rename the `details` part with `overview` or you need to change the data type of product identifiers from `Long` into a data type which cannot easily be converted into a String with `toString()` (e. g., a custom identifier type) so that it can be appended to a URI fragment like in the example above. You would have to search your whole application's code to find all spots where a link is assembled manually like this. If you miss just one of these places, you would end up with a malfunctioning link in your application.
  +
  +We want to do better. It is our goal to keep the definition of an application's URI fragment structure in one single place so that we can change it there globally. This place is the definition of the application-scoped instance of `UriActionMapperTree`. We want to be able to change an action mapper's name or a URI fragment parameter's name in the construction code of the action mapper tree. We want then to have all application links to be adapted accordingly.
  +
  +The URI action mapper tree allows us to do so easily. We can entrust the task of assembling valid parameterized URI fragments to the action mapper tree. We need two things for this:
  +
  +. A reference to the URI action mapper for which we want to create a link.
   . The set of concrete parameter values to be encoded into the URI fragment. This can be omitted, of course, if we want to assemble a URI fragment which does not contain any parameter values.
   
  -We can obtain the action mapper references when we build the URI action mapper tree. This is described shortly.
  +We can obtain the action mapper references during the construction of the URI action mapper tree. This will be described shortly.
   
   The easiest way to assemble a URI fragment is when you don't need any parameter values to be included in the resulting URI fragment. You can then just pass the target action mapper reference to the single-argument method `UriActionMapperTree#assembleUriFragment()`:
   
  
positive.code: }
  ----
  
  Now we can build the URI action mapper tree.
  
  [source,java]
  ----
  
negative.code: = User Manual
  Roland Krüger, mail (AT) rolandkrueger dot info
  v1.1, 2017-01-27
  :source-highlighter: coderay
  :toc:
  
  