anchor.diff:      function SetSubject(const AValue: string): IJOSEProducerBuilder;
       function SetCustomClaim(const AName: string; const AValue: TValue): IJOSEProducerBuilder;
   
  +    /// <summary>
  +    ///   Signing Keys
  +    /// </summary>
       function SetKey(const AKey: TJOSEBytes): IJOSEProducerBuilder;
       function SetKeyPair(const APublicKey, APrivateKey: TJOSEBytes): IJOSEProducerBuilder;
  -
  -    function SetAlgorithm(AAlgorithm: TJOSEAlgorithmId): IJOSEProducerBuilder;
   
       function Build(): IJOSEProducer;
     end;
  
positive.code:   public
      class function New(): IJOSEProducerBuilder;
      destructor Destroy; override;
  
      function SetAudience(const AValue: string): IJOSEProducerBuilder; overload;
      function SetAudience(const AValue: TArray<string>): IJOSEProducerBuilder; overload;
  
negative.code:   Result := Self;
  end;
  
  function TJOSEProducerBuilder.SetKeyID(const AValue: string): IJOSEProducerBuilder;
  begin
    GetJWT.Header.KeyID := AValue;
    Result := Self;
  end;
  
  function TJOSEProducerBuilder.SetKeyPair(const APublicKey, APrivateKey: TJOSEBytes): IJOSEProducerBuilder;
  begin
    GetKeys.SetAsymmetricKeys(APublicKey, APrivateKey);
  