JWSHeader is declared public, but it implements an internal JOSEHeader protocol. set is declared as a public method in JOSEHeader extension, but ultimately it is unavailable outside the project, being restricted by JOSEHeader internal access level.
Tests pass because @Testable effectively makes turns internal into public.