anchor.diff:      inherit content;
     };
   
  -  # Create a "ThenElse" property which contains choices being chosen by
  -  # the evaluation of an "If" statement.
  -  isThenElse = attrs: (typeOf attrs) == "then-else";
  -  mkThenElse = attrs:
  -    assert attrs ? thenPart && attrs ? elsePart;
  -    __trace "Obsolete usage of mkThenElse, replace it by mkMerge."
  -    mkProperty {
  -      property = {
  -        _type = "then-else";
  -        onEval = val: throw "Missing mkIf statement.";
  -        inherit (attrs) thenPart elsePart;
  -      };
  -      content = mkNotdef;
  -    };
  -
  -  # Create an "Always" property removing/ ignoring all "If" statement.
  -  isAlways = attrs: (typeOf attrs) == "always";
  -  mkAlways = value:
  -    mkProperty {
  -      property = {
  -        _type = "always";
  -        onEval = p@{content, ...}: content;
  -        inherit value;
  -      };
  -      content = mkNotdef;
  -    };
  -
     mkAssert = assertion: message: content:
       mkIf
         (if assertion then true else throw "\nFailed assertion: ${message}")
         content;
  -
  -  # Remove all "If" statement defined on a value.
  -  rmIf = foldProperty (
  -      foldFilter isIf
  -        ({content, ...}: content)
  -        id
  -    ) id;
   
     # Evaluate the "If" statements when either "ThenElse" or "Always"
     # statement is encountered.  Otherwise it removes multiple If statements and
  
positive.code:       # in the attribute list and attrs.
        ifProps =
          foldProperty
            (foldFilter (p: isIf p || isThenElse p || isAlways p)
              # then, push the codition inside the list list
              (p@{property, content, ...}:
                { inherit (content) attrs;
                  list = [property] ++ content.list;
  
negative.code:   # property and call the function `nul' on the final value which is not a
    # property.  The stack is traversed in reversed order.  The `op' function
    # should expect a property with a content which have been modified.
    #
    # Warning: The `op' function expects only one argument in order to avoid
    # calls to mkProperties as the argument is already a valid property which
    # contains the result of the folding inside the content attribute.
  