I've discovered that, as of 10.2 and later, testing for CompositeSymbol instead of MultiLayerSymbol objects seem to work for all cases where null values aren't an issue, particularly because you know those single-point layers (not lines or areas), as follows://get graphic
Graphic graphic = positionReportLayer.getGraphic(graphicId) ;
//get the symbol type for the graphic
Symbol milSymb = graphic.getSymbol();
//is this a composite symbol?
if (milSymb instanceof CompositeSymbol)
{
System.out.println("this is a composite symbol");
} else {
System.out.println("this must be a multi-layer symbol");
}
This highly depends on having direct access of the message group layer's graphics layers for adding composite symbols per this post. Although it's been said that they cannot be used on layers with added renderers, I have found that composite symbols seem to work just as well.