code: protected byte[] getGetProcessingOptions(final byte[] pPdol) throws CommunicationException {
  		// List Tag and length from PDOL
  		List<TagAndLength> list = TlvUtil.parseTagAndLength(pPdol);
  		ByteArrayOutputStream out = new ByteArrayOutputStream();
  		try {
  			out.write(EmvTags.COMMAND_TEMPLATE.getTagBytes()); // COMMAND
  			// TEMPLATE
  			out.write(TlvUtil.getLength(list)); // ADD total length
  			if (list != null) {
  				for (TagAndLength tl : list) {
  					out.write(template.get().getTerminal().constructValue(tl));
  				}
  			}
  		} catch (IOException ioe) {
  			LOGGER.error("Construct GPO Command:" + ioe.getMessage(), ioe);
  		}
  		return template.get().getProvider().transceive(new CommandApdu(CommandEnum.GPO, out.toByteArray(), 0).toBytes());
  	}
docs: Method used to create GPO command and execute it
  
  @param pPdol
  PDOL raw data
  @return return data
  @throws CommunicationException communication error