docs: private void readState(GetField fields) throws IOException {
          //get caller principal
          callerPrincipal = (WSPrincipal) fields.get(CALLER_PRINCIPAL, null);
  
          //get boolean marking if subjects are equal
          subjectsAreEqual = fields.get(SUBJECTS_ARE_EQUAL, false);
  
          //only deserialize invocation principal if it's different from the caller
          if (!subjectsAreEqual) {
              //get invocation principal
              invocationPrincipal = (WSPrincipal) fields.get(INVOCATION_PRINCIPAL, null);
          } else {
              invocationPrincipal = callerPrincipal;
          }
  
          jaasLoginContextEntry = (String) fields.get(JAAS_LOGIN_CONTEXT, null);
          callerSubjectCacheKey = (String) fields.get(CALLER_SUBJECT_CACHE_KEY, null);
          invocationSubjectCacheKey = (String) fields.get(INVOCATION_SUBJECT_CACHE_KEY, null);
      }