private void addDataToSend(
     Session session, ChannelType target, byte[] originalData, boolean needEncryption) {
   byte[] dataToSend = originalData;
   if (needEncryption) {
     dataToSend = handleDataEncryption(session.getEncryptor(), target, originalData);
   }
   ChannelData channelData = session.getData(target);
   if (channelData == null) {
     throw new NullPointerException();
   }
   channelData.addDataToSend(dataToSend);
   ShadowsocksLocal.getInstance().addEvent(new WriteEvent(session, target));
 }