code: void changeWriteCiphers() throws SSLException {
          if (connectionState != cs_HANDSHAKE
                  && connectionState != cs_RENEGOTIATE) {
              throw new SSLProtocolException(
                  "State error, change cipher specs");
          }
  
          // ... create compressor
  
          CipherBox oldCipher = writeCipher;
  
          try {
              writeCipher = handshaker.newWriteCipher();
              writeMAC = handshaker.newWriteMAC();
          } catch (GeneralSecurityException e) {
              // "can't happen"
              throw (SSLException)new SSLException
                                  ("Algorithm missing:  ").initCause(e);
          }
  
          // See comment above.
          oldCipher.dispose();
  
          // reset the flag of the first application record
          isFirstAppOutputRecord = true;
      }
docs: /*
  used by Handshaker to change the active write cipher, follows
  the output of the CCS message.
  
  Also synchronized on "this" from readRecord/delegatedTask.