class SamSelectionRequest extends AbstractSeSelectionRequest<
        AbstractSamCommandBuilder<? extends AbstractSamResponseParser>> {

  @Override
  protected CalypsoSam parse(SeResponse seResponse) {
    List<AbstractSamCommandBuilder<? extends AbstractSamResponseParser>> commandBuilders =
        getCommandBuilders();

    if (commandBuilders.size() == 1) {
      // an unlock command has been requested
      List<ApduResponse> apduResponses = seResponse.getApduResponses();
      if (apduResponses == null) {
        throw new CalypsoDesynchronizedExchangesException(
            "Mismatch in the number of requests/responses");
      }
      // check the SAM response to the unlock command
      commandBuilders.get(0).createResponseParser(apduResponses.get(0)).checkStatus();
    }

    return new CalypsoSam(seResponse);
  }

  public  SamSelectionRequest(SamSelector samSelector);

}