anchor.diff:      throw({wrong_param, Name, ViolatedRule, Info}).
   
   -spec get_value(body | qs_val | header | binding, Name :: any(), Req0 :: cowboy_req:req()) ->
  -    {Value :: any(), Req :: cowboy_req:req()}.
  +    {Value :: any(), Req :: cowboy_req:req()} | 
  +    {error, Reason :: any(), Req :: cowboy_req:req()}.
   get_value(body, _Name, Req0) ->
       {ok, Body, Req} = cowboy_req:body(Req0),
  -    Value = prepare_body(Body),
  -    {Value, Req};
  +    case prepare_body(Body) of
  +        {error, Reason} ->
  +            {error, Reason, Req};
  +        Value ->
  +            {Value, Req}
  +    end;
   
   get_value(qs_val, Name, Req0) ->
       {QS, Req} = cowboy_req:qs_vals(Req0),
  
positive.code: prepare_body(Body) ->
      case Body of
          <<"">> -> <<"">>;
          _ -> jsx:decode(Body, [return_maps])
      end.
  
  validate_with_schema(Body, Definition, ValidatorState) ->
  
negative.code: 
  populate_request_param(OperationID, Name, Req0, ValidatorState) ->
      #{rules := Rules, source := Source} = request_param_info(OperationID, Name),
      case get_value(Source, Name, Req0) of
          {error, Reason, Req} ->
              {error, Reason, Req};
          {Value, Req} ->
              case prepare_param(Rules, Name, Value, ValidatorState) of
                  {ok, Result} -> {ok, Name, Result, Req};
                  {error, Reason} ->
                      {error, Reason, Req}
              end
      end.
  
  -spec validate_response(
  