code: @SuppressWarnings("unchecked")
  	public static <T> T message(String modid, String messageName, Object... data)
  	{
  		//do not print warnings if mod is not loaded
  		if (!Loader.isModLoaded(modid))
  			return null;
  
  		Collection<Pair<Object, Method>> messageList = messages.get(modid + ":" + messageName);
  		if (messageList.size() == 0)
  		{
  			MalisisCore.log.warn("No message handler matching the parameters passed for {}", modid + ":" + messageName);
  			return null;
  		}
  
  		for (Pair<Object, Method> message : messageList)
  		{
  			if (checkParameters(message.getRight(), data))
  			{
  				try
  				{
  					return (T) message.getRight().invoke(message.getLeft(), data);
  				}
  				catch (ReflectiveOperationException e)
  				{
  					MalisisCore.log.warn("An error happened processing the message :", e);
  				}
  			}
  		}
  
  		return null;
  
  	}
docs: Sends a message to the another mod.
  
  @param modid the modid
  @param messageName the message name
  @param data the data