anchor.diff:    Result := TJSONUtils.GetJSONValue(TReservedClaimNames.SUBJECT, FJSON).AsString;
   end;
   
  -procedure TJWTClaims.SetAudience(Value: string);
  +procedure TJWTClaims.SetAudience(const AValue: string);
   var
     LAudienceArray: TArray<string>;
     LAudience: string;
     LArray: TJSONArray;
   begin
  -  if Value.IsEmpty then
  +  if AValue.IsEmpty then
     begin
       TJSONUtils.RemoveJSONNode(TReservedClaimNames.AUDIENCE, FJSON);
       Exit;
     end;
   
  -  LAudienceArray := Value.Split([AUDIENCE_SEPARATOR]);
  +  LAudienceArray := AValue.Split([AUDIENCE_SEPARATOR]);
   
     if Length(LAudienceArray) > 1 then
     begin
  
positive.code:     function GetJWTId: string;
      function GetNotBefore: TDateTime;
      function GetSubject: string;
      procedure SetAudience(Value: string);
      procedure SetExpiration(Value: TDateTime);
      procedure SetIssuedAt(Value: TDateTime);
      procedure SetIssuer(Value: string);
      procedure SetJWTId(Value: string);
      procedure SetNotBefore(Value: TDateTime);
      procedure SetSubject(Value: string);
  
      function GetHasAudience: Boolean;
      function GetHasExpiration: Boolean;
  
negative.code: 
      function ClaimExists(const AClaimName: string): Boolean;
      function GetAudienceArray: TArray<string>;
      procedure SetAudienceArray(const AValue: TArray<string>);
    public
      constructor Create; virtual;
      procedure SetClaimOfType<T>(const AName: string; const AValue: T);
  