The first constructor is called:
new XMessage(information, new ArrayList<Object>());
Calls the second constructor:
new XMessage(information, new ArrayList<String>());
ArrayList<String>()not considered as List<Object>, but ArrayList<Object>-. Consider the following constructor:
public XMessage(Information info, List<? extends Object> results)
like @LuiggiMendoza suggested below.