anchor.diff:  
   == What Option changes to our example
   
  -Using `Option` to represent optional data instead of a list brings some benefits in the sense that a program is often easier to read if we can easily distinguish between true lists (which can containing any number of elements) and singleton lists representing optional data (which can only contain zero or one element). By the way, the difference is not always visible since type may sometimes be inferred, such as when chaining methods. Here is our `pack` method using `Option` instead of `List` for optional data:
  +Using `Option` to represent optional data instead of a list brings some benefits in the sense that a program is often easier to read if we can easily distinguish between true lists (which can contain any number of elements) and singleton lists representing optional data (which can only contain zero or one element). By the way, the difference is not always visible since type may sometimes be inferred, such as when chaining methods. Here is our `pack` method using `Option` instead of `List` for optional data:
   
   [source,java]
   ----
  
positive.code: 
  In the previous article, we saw that it was perfectly possible to use a list to represent optional data. Absence of data is represented by an empty list, and data is represented by a singleton list. The main problem is that there was no mean to differentiate a normal list from a singleton list. The good thing is that it is very easy to compose both.
  
  Another possibility is to use a special class to represent singleton lists. We might call this class `Option`. It will be identical to the `List` class, with two main exceptions: there is no `cons` method (since we can't add elements) and the folding methods generally do not take a function argument (although it could) and will simply return either the included value, if it is present, or the "zero" value if not. Of course, the zero value will have a more explicit name such as `default`, but this (like names in general) is irrelevant. Here is a minimal `Option` class:
  
  [source,java]
  ----
  
negative.code:   ...
  ----
  
  (1) A random UUID is generated,
  
  (2) and it is used to test equality.
  
  == Representing the absence of data
  
  