public static String getSWmeaning(byte[] data) {
        byte SW[] = new byte[2];
        SW[0] = data[data.length - 2];
        SW[1] = data[data.length - 1];

        if (Arrays.equals(SW, new byte[]{(byte) 0x90, (byte) 0x00})) {
            return "Command successfully executed";
        }
        if (SW[0] == (byte) 0x9F) {
            return "Command successfully executed; ‘" + (int) SW[1] + "’ bytes of data are available and can be requested using GET RESPONSE";
        }
        if (Arrays.equals(SW, new byte[]{(byte) 0x67, (byte) 0x00})) {
            return "Length incorrect";
        }
        if (Arrays.equals(SW, new byte[]{(byte) 0x94, (byte) 0x02})) {
            return "Address range exceeded";
        }


        return "Unknown/unimplemented code: " + bytesToHex(SW);
    }