Make the code simpler and fix get response logic.
Minor changes. Add some comments and rewind the command buffer when done.
Allow sending up to 256 Get Requests to read the entire 64KB response.
Make JnaCardTerminals (not JnaTerminalFactorySpi) the owner of SCardContext.

Perform SCardEstablishContext in TerminalFactory.terminals() instead of the JnaTerminalFactorySpi constructor (called by TerminalFactory.getInstance). This will make it easier for the user to re-establish context when the daemon is restarted.

Also, throw EstablishContextException(JnaPCSCException) instead of IllegalStateException(JnaPCSCException), so that it is more catchable.
Add references JnaCard -> JnaCardTerminal -> JnaCardTerminals.

Make each of the objects created by JnaCardTerminals hold a reference back to it, so that it won’t be finalized before the things that it creates.