anchor.diff:    public
       class function New(): IJOSEProducerBuilder;
       destructor Destroy; override;
  +
  +    function SetAlgorithm(AAlgorithm: TJOSEAlgorithmId): IJOSEProducerBuilder;
  +    function SetKeyID(const AValue: string): IJOSEProducerBuilder;
  +    function SetHeaderParam(const AName: string; const AValue: TValue): IJOSEProducerBuilder;
   
       function SetAudience(const AValue: string): IJOSEProducerBuilder; overload;
       function SetAudience(const AValue: TArray<string>): IJOSEProducerBuilder; overload;
  
positive.code:     function SetKey(const AKey: TJOSEBytes): IJOSEProducerBuilder;
      function SetKeyPair(const APublicKey, APrivateKey: TJOSEBytes): IJOSEProducerBuilder;
  
      function SetAlgorithm(AAlgorithm: TJOSEAlgorithmId): IJOSEProducerBuilder;
  
      function Build(): IJOSEProducer;
    end;
  
  
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);
  