code: public boolean send(Whisper<?> whisper) {
  		if (isShutdown.get())
  			return false;
  		// Internal Queue (Local Thread) for INPLACE multiple recursive calls
  		final ArrayDeque<Whisper<?>> localQueue = ref.get();
  		if (!localQueue.isEmpty()) {
  			localQueue.addLast(whisper);
  			return true;
  		}
  		localQueue.addLast(whisper);
  		while ((whisper = localQueue.peekFirst()) != null) {
  			final Integer type = whisper.dest;
  			final Set<Talker> set = map.get(type);
  			if (set != null) {
  				for (final Talker talker : set) {
  					final TalkerContext ctx = talker.getState();
  					switch (ctx.type) {
  					case INPLACE_UNSYNC:
  						talker.newMessage(whisper);
  						break;
  					case INPLACE_SYNC:
  						synchronized (talker) {
  							talker.newMessage(whisper);
  						}
  						break;
  					case QUEUED_UNBOUNDED:
  					case QUEUED_BOUNDED:
  						while (!ctx.queueMessage(whisper))
  							;
  						break;
  					}
  				}
  			}
  			localQueue.pollFirst();
  		}
  		return true;
  	}
docs: Send message and optionally wait response
  
  @param whisper
  @return true if message is sended