anchor.diff:          |> ifNotSpecified (this.ValidateIfUnmodifiedSince lastModified)
           |> bind (this.ValidateIfNoneMatch eTag)
           |> ifNotSpecified (this.ValidateIfModifiedSince lastModified)
  -
  -    /// **Description**
  -    ///
  -    /// Sends a default HTTP `304 Not Modified` response to the client.
  -    ///
  +   
  +    /// <summary>
  +    /// Sends a default HTTP 304 Not Modified response to the client.
  +    /// </summary>
  +    /// <returns></returns>
       member this.NotModifiedResponse() =
           this.SetStatusCode StatusCodes.Status304NotModified
           Some this
   
  -    /// **Description**
  -    ///
  -    /// Sends a default HTTP `412 Precondition Failed` response to the client.
  -    ///
  +    /// <summary>
  +    /// Sends a default HTTP 412 Precondition Failed response to the client.
  +    /// </summary>
  +    /// <returns></returns>
       member this.PreconditionFailedResponse() =
           this.SetStatusCode StatusCodes.Status412PreconditionFailed
           Some this
  
positive.code:                 | true  -> AllConditionsMet
                  | false -> ResourceNotModified
  
      /// **Description**
      ///
      /// Validates the following conditional HTTP headers of the HTTP request:
      ///
      /// `If-Match`
      /// `If-None-Match`
      /// `If-Modified-Since`
      /// `If-Unmodified-Since`
      ///
      /// **Parameters**
      ///
      /// `eTag`: Optional ETag. You can use the static `EntityTagHeaderValue.FromString` helper method to generate a valid `EntityTagHeaderValue` object.
      /// `lastModified`: Optional `DateTimeOffset` object denoting the last modified date.
      ///
      /// **Output**
      ///
      /// Returns a `Precondition` union type, which can have one of the following cases:
      ///
      /// `NoConditionsSpecified`: No validation has taken place, because the client didn't send any conditional HTTP headers.
      /// `ConditionFailed`: At least one condition couldn't be satisfied. It is advised to return a `412` status code back to the client (you can use the `HttpContext.PreconditionFailedResponse()` method for that purpose).
      /// `ResourceNotModified`: The resource hasn't changed since the last visit. The server can skip processing this request and return a `304` status code back to the client (you can use the `HttpContext.NotModifiedResponse()` method for that purpose).
      /// `AllConditionsMet`: All pre-conditions can be satisfied. The server should continue processing the request as normal.
      ///
      member this.ValidatePreconditions (eTag : EntityTagHeaderValue option) (lastModified : DateTimeOffset option) =
          // Parse headers
          let responseHeaders = this.Response.GetTypedHeaders()
  
negative.code: // HttpHandler functions
  // ---------------------------
  
  /// <summary>
  /// Validates the following conditional HTTP headers of the request:
  ///
  /// If-Match
  /// 
  /// If-None-Match
  /// 
  /// If-Modified-Since
  /// 
  /// If-Unmodified-Since
  /// 
  ///
  /// If the conditions are met (or non existent) then it will invoke the next http handler in the pipeline otherwise it will return a 304 Not Modified or 412 Precondition Failed response.
  /// </summary>
  /// <param name="eTag">Optional ETag. You can use the static EntityTagHeaderValue.FromString helper method to generate a valid <see cref="EntityTagHeaderValue"/> object.</param>
  /// <param name="lastModified">Optional <see cref="System.DateTimeOffset"/> object denoting the last modified date.</param>
  /// <param name="next"></param>
  /// <param name="ctx"></param>
  /// <returns>A Giraffe <see cref="HttpHandler" /> function which can be composed into a bigger web application.</returns>
  let validatePreconditions (eTag           : EntityTagHeaderValue option)
                            (lastModified   : DateTimeOffset option) : HttpHandler =
      fun (next : HttpFunc) (ctx : HttpContext) ->
  