anchor.diff:        end
     end.
   
  +if_none_match(EtagList, Ctx0) ->
  +  case generate_etag(Ctx0) of
  +    {undefined, Ctx} ->
  +      error_response(412, Ctx);
  +    {Etag, Ctx} ->
  +      case lists:member(Etag, EtagList) of
  +        true  -> if_none_match_check_method(Ctx);
  +        false -> error_response(412, Ctx)
  +      end
  +  end.
  +
  +if_none_match_check_method(Ctx0) ->
  +  {Method, Ctx} = method(Ctx0),
  +  case Method =:= <<"GET">> orelse Method =:= <<"HEAD">> of
  +    true -> error_response(304, Ctx);
  +    false -> error_response(412, Ctx)
  +  end.
  +
   %%_* Defaults ==================================================================
   
   default(ping) ->
  
positive.code:   end.
  
  -spec v3i12_if_none_match(context()) -> flow_result().
  v3i12_if_none_match(Ctx) ->
    {ok, Ctx}.
  
  -spec v3l13_if_modified_since(context()) -> flow_result().
  v3l13_if_modified_since(Ctx) ->
  
negative.code:     {undefined, Ctx} ->
        error_response(412, Ctx);
      {Etag, Ctx} ->
        case lists:member(Etag, EtagList) of
          true  -> {ok, Ctx};
          false -> error_response(412, Ctx)
  