code: public void storeAwaitingMessage( Instance instance, Message msg ) {
  
  		Instance scopedInstance = InstanceHelpers.findScopedInstance( instance );
  		this.logger.finer( "Storing message " + msg.getClass().getSimpleName() + " for instance " + scopedInstance );
  
  		// We need synchronized access to the map.
  		// ConcurrentHashMap does not suit. We need atomic insertion in the lists (which are map values).
  		synchronized( this.scopedInstanceToAwaitingMessages ) {
  			List<Message> messages = this.scopedInstanceToAwaitingMessages.get( scopedInstance );
  			if( messages == null ) {
  				messages = new ArrayList<>( 1 );
  				this.scopedInstanceToAwaitingMessages.put( scopedInstance, messages );
  			}
  
  			messages.add( msg );
  		}
  	}
docs: Stores a message to send once the root instance is online.
  <p>
  Can be called concurrently with {@link #removeAwaitingMessages(Instance)}.
  </p>
  
  @param instance an instance (any instance is fine, the root will be determined)
  @param msg the message to store (not null)