code: public static boolean decodeGSSUPToken(Codec codec, @Sensitive byte[] token_arr,
                                             InitialContextToken gssup_tok) {
          boolean result = false;
          if (gssup_tok != null) {
              try {
                  byte[] data = readGSSTokenData(GSSUPMechOID.value.substring(4), token_arr);
                  if (data != null) {
                      Any a = codec.decode_value(data, InitialContextTokenHelper.type());
                      InitialContextToken token = InitialContextTokenHelper.extract(a);
                      if (token != null) {
                          gssup_tok.username = token.username;
                          gssup_tok.password = token.password;
                          gssup_tok.target_name = decodeGSSExportedName(token.target_name).getName().getBytes("UTF-8");
  
                          result = true;
                      }
                  }
              } catch (Exception ex) {
                  // do nothing, return false
              }
          }
          return result;
      }
docs: Decode an GSSUP InitialContextToken from a GSSToken.
  
  @param codec The codec to do the encoding of the Any.
  @param gssup_tok The InitialContextToken struct to fill in the decoded values.
  @return Return true when decoding was successful, false otherwise.