anchor.diff:    Result.Reason := 'OK';
   end;
   
  +class function TStatusCode.PARTIAL_CONTENT: TReponseCode;
  +begin
  +  Result.StatusCode := 206;
  +  Result.Reason := 'Partial Content';
  +end;
  +
  +class function TStatusCode.PAYMENT_REQUIRED: TReponseCode;
  +begin
  +  Result.StatusCode := 402;
  +  Result.Reason := 'Payment Required';
  +end;
  +
  +class function TStatusCode.PRECONDITION_FAILED: TReponseCode;
  +begin
  +  Result.StatusCode := 412;
  +  Result.Reason := 'Precondition Failed';
  +end;
  +
   class function TStatusCode.PROXY_AUTHENTICATION_REQUIRED: TReponseCode;
   begin
     Result.StatusCode := 407;
     Result.Reason := 'Proxy Authentication Required';
   end;
   
  +class function TStatusCode.REQUESTED_RANGE_NOT_SATISFIABLE: TReponseCode;
  +begin
  +  Result.StatusCode := 416;
  +  Result.Reason := 'Requested Range Not Satisfiable';
  +end;
  +
  +class function TStatusCode.REQUEST_ENTITY_TOO_LARGE: TReponseCode;
  +begin
  +  Result.StatusCode := 413;
  +  Result.Reason := 'Request Entity Too Large';
  +end;
  +
  +class function TStatusCode.REQUEST_TIMEOUT: TReponseCode;
  +begin
  +  Result.StatusCode := 408;
  +  Result.Reason := 'Request Timeout';
  +end;
  +
  +class function TStatusCode.REQUEST_URI_TOO_LONG: TReponseCode;
  +begin
  +  Result.StatusCode := 414;
  +  Result.Reason := 'Request-URI Too Long';
  +end;
  +
  +class function TStatusCode.RESET_CONTENT: TReponseCode;
  +begin
  +  Result.StatusCode := 205;
  +  Result.Reason := 'Reset Content';
  +end;
  +
  +class function TStatusCode.SEE_OTHER: TReponseCode;
  +begin
  +  Result.StatusCode := 303;
  +  Result.Reason := 'See Other';
  +end;
  +
  +class function TStatusCode.SERVICE_UNAVAILABLE: TReponseCode;
  +begin
  +  Result.StatusCode := 503;
  +  Result.Reason := 'Service Unavailable';
  +end;
  +
  +class function TStatusCode.SWITCHING_PROTOCOLS: TReponseCode;
  +begin
  +  Result.StatusCode := 101;
  +  Result.Reason := 'Switching Protocols';
  +end;
  +
  +class function TStatusCode.TEMPORARY_REDIRECT: TReponseCode;
  +begin
  +  Result.StatusCode := 307;
  +  Result.Reason := 'Temporary Redirect';
  +end;
  +
   class function TStatusCode.UNAUTHORIZED: TReponseCode;
   begin
     Result.StatusCode := 401;
     Result.Reason := 'Unauthorized';
   end;
   
  +class function TStatusCode.UNSUPPORTED_MEDIA_TYPE: TReponseCode;
  +begin
  +  Result.StatusCode := 415;
  +  Result.Reason := 'Unsupported Media Type';
  +end;
  +
  +class function TStatusCode.USE_PROXY: TReponseCode;
  +begin
  +  Result.StatusCode := 305;
  +  Result.Reason := 'Use Proxy';
  +end;
  +
   { TRestUtils }
   
   class function TRestUtils.Base64Decode(const AValue: String): String;
  
positive.code:     Reason: string;
    end;
  
    TStatusCode = class
    public
      (* 200 OK, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">HTTP/1.1 documentation</a>}.*)
      class function OK(): TReponseCode;
  
      (* 201 Created, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">HTTP/1.1 documentation</a>}. *)
      class function CREATED(): TReponseCode;
  
      (* 202 Accepted, see {@l ink <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3">HTTP/1.1 documentation</a>}.*)
      class function ACCEPTED: TReponseCode;
  
      (* 204 No Content, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">HTTP/1.1 documentation</a>}. *)
      class function NO_CONTENT: TReponseCode;
  
      (* 400 Bad Request, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">HTTP/1.1 documentation</a>}*)
      class function BAD_REQUEST: TReponseCode;
  
      (* 401 Unauthorized, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">HTTP/1.1 documentation</a>}*)
      class function UNAUTHORIZED: TReponseCode;
  
      (* 403 Forbidden, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">HTTP/1.1 documentation</a>}*)
      class function FORBIDDEN: TReponseCode;
  
      (* 404 Not Found, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">HTTP/1.1 documentation</a>}*)
      class function NOT_FOUND: TReponseCode;
  
      (* 407 Proxy Authentication Required, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.8">HTTP/1.1 documentation</a>}*)
      class function PROXY_AUTHENTICATION_REQUIRED: TReponseCode;
    end;
  
    TRestUtils = class
  
negative.code:   Result.Reason := 'Accepted';
  end;
  
  class function TStatusCode.BAD_GATEWAY: TReponseCode;
  begin
    Result.StatusCode := 502;
    Result.Reason := 'Bad Gateway';
  end;
  
  class function TStatusCode.BAD_REQUEST: TReponseCode;
  begin
    Result.StatusCode := 400;
    Result.Reason := 'Bad Request';
  end;
  
  class function TStatusCode.CONFLICT: TReponseCode;
  begin
    Result.StatusCode := 409;
    Result.Reason := 'Conflict';
  end;
  
  class function TStatusCode.CONTINUE: TReponseCode;
  begin
    Result.StatusCode := 100;
    Result.Reason := 'Continue';
  end;
  
  class function TStatusCode.Created: TReponseCode;
  begin
    Result.StatusCode := 201;
    Result.Reason := 'Created';
  end;
  
  class function TStatusCode.EXPECTATION_FAILED: TReponseCode;
  begin
    Result.StatusCode := 417;
    Result.Reason := 'Expectation Failed';
  end;
  
  class function TStatusCode.FORBIDDEN: TReponseCode;
  begin
    Result.StatusCode := 403;
    Result.Reason := 'Forbidden';
  end;
  
  class function TStatusCode.FOUND: TReponseCode;
  begin
    Result.StatusCode := 302;
    Result.Reason := 'Found';
  end;
  
  class function TStatusCode.GATEWAY_TIMEOUT: TReponseCode;
  begin
    Result.StatusCode := 504;
    Result.Reason := 'Gateway Timeout';
  end;
  
  class function TStatusCode.GONE: TReponseCode;
  begin
    Result.StatusCode := 410;
    Result.Reason := 'Gone';
  end;
  
  class function TStatusCode.HTTP_VERSION_NOT_SUPPORTED: TReponseCode;
  begin
    Result.StatusCode := 505;
    Result.Reason := 'HTTP Version Not Supported';
  end;
  
  class function TStatusCode.INTERNAL_SERVER_ERROR: TReponseCode;
  begin
    Result.StatusCode := 500;
    Result.Reason := 'Internal Server Error';
  end;
  
  class function TStatusCode.LENGTH_REQUIRED: TReponseCode;
  begin
    Result.StatusCode := 411;
    Result.Reason := 'Length Required';
  end;
  
  class function TStatusCode.METHOD_NOT_ALLOWED: TReponseCode;
  begin
    Result.StatusCode := 405;
    Result.Reason := 'Method Not Allowed';
  end;
  
  class function TStatusCode.MOVED_PERMANENTLY: TReponseCode;
  begin
    Result.StatusCode := 301;
    Result.Reason := 'Moved Permanently';
  end;
  
  class function TStatusCode.MULTIPLE_CHOICES: TReponseCode;
  begin
    Result.StatusCode := 300;
    Result.Reason := 'Multiple Choices';
  end;
  
  class function TStatusCode.NON_AUTHORITATIVE_INFORMATION: TReponseCode;
  begin
    Result.StatusCode := 203;
    Result.Reason := 'Non-Authoritative Information';
  end;
  
  class function TStatusCode.NOT_ACCEPTABLE: TReponseCode;
  begin
    Result.StatusCode := 406;
    Result.Reason := 'Not Acceptable';
  end;
  
  class function TStatusCode.NOT_FOUND: TReponseCode;
  begin
    Result.StatusCode := 404;
    Result.Reason := 'Not Found';
  end;
  
  class function TStatusCode.NOT_IMPLEMENTED: TReponseCode;
  begin
    Result.StatusCode := 501;
    Result.Reason := 'Not Implemented';
  end;
  
  class function TStatusCode.NOT_MODIFIED: TReponseCode;
  begin
    Result.StatusCode := 304;
    Result.Reason := 'Not Modified';
  end;
  
  class function TStatusCode.NO_CONTENT: TReponseCode;
  begin
    Result.StatusCode := 204;
  