anchor.diff:      Result := Result.Substring(0, Result.Length - 'Attribute'.Length);
   end;
   
  +{ ANYAttribute }
  +
  +function ANYAttribute.Matches(const ARequest: TWebRequest): Boolean;
  +begin
  +  Result := ARequest.MethodType = TMethodType.mtAny;
  +end;
  +
  +{ OPTIONSAttribute }
  +
  +function OPTIONSAttribute.Matches(const ARequest: TWebRequest): Boolean;
  +begin
  +  Result := SameText(ARequest.Method, 'OPTIONS');
  +end;
  +
   end.
  
positive.code:     property HttpMethodName: string read GetHttpMethodName;
    end;
  
    GETAttribute     = class(HttpMethodAttribute)
    public
      function Matches(const ARequest: TWebRequest): Boolean; override;
  
negative.code:     function Matches(const ARequest: TWebRequest): Boolean; override;
    end;
  
    OPTIONSAttribute = class(HttpMethodAttribute)
    public
      function Matches(const ARequest: TWebRequest): Boolean; override;
    end;
  
    ConsumesAttribute = class(MARSAttribute)
    private
  