@Override
  public GssResult parseResponse(Node response) throws ParserException, InvalidTokenException {

    Element returnedToken = findReturnedToken(response);
    RequestSecurityTokenResponseType parsedResponse =
        returnedToken == null
            ? parseIntermediateGssResponse(response)
            : parseFinalGssResponse(response);

    byte[] leg = extractBinaryExchangeData(parsedResponse.getBinaryExchange());

    GssResult parseResult = new GssResult(leg, returnedToken, parsedResponse.getContext());

    return parseResult;
  }
  /**
   * Helper: validate the Context attribute of the given RequestSecurityTokenResponse (and throw
   * ParseException if it is not valid).
   */
  private void validateContextId(RequestSecurityTokenResponseType response) throws ParserException {

    String contextId = response.getContext();
    if (contextId == null) {
      log.debug(PROCESS_RSTR_ERROR + ": Context is null");
      throw new ParserException(PROCESS_RSTR_ERROR);
    }
  }