code: private SessionIssuer parseSessionIssuer(SessionContext sessionContext) throws IOException {
          if (jsonParser.nextToken() != JsonToken.START_OBJECT) {
              throw new JsonParseException("Not a SessionIssuer object", jsonParser.getCurrentLocation());
          }
  
          SessionIssuer sessionIssuer = new SessionIssuer();
  
          while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
              String key = jsonParser.getCurrentName();
  
              switch (key) {
              case "type":
                  sessionIssuer.add(CloudTrailEventField.type.name(), this.jsonParser.nextTextValue());
                  break;
              case "principalId":
                  sessionIssuer.add(CloudTrailEventField.principalId.name(), this.jsonParser.nextTextValue());
                  break;
              case "arn":
                  sessionIssuer.add(CloudTrailEventField.arn.name(), this.jsonParser.nextTextValue());
                  break;
              case "accountId":
                  sessionIssuer.add(CloudTrailEventField.accountId.name(), this.jsonParser.nextTextValue());
                  break;
              case "userName":
                  sessionIssuer.add(CloudTrailEventField.userName.name(), this.jsonParser.nextTextValue());
                  break;
              default:
                  sessionIssuer.add(key, this.parseDefaultValue(key));
                  break;
              }
          }
  
          return sessionIssuer;
      }
docs: Parses the {@link SessionContext} object.
  This runs only if the session is running with role-based or federated access permissions
  (in other words, temporary credentials in IAM).
  
  @param sessionContext
  @return the session issuer object.
  @throws IOException