rule message that references the same expression multiple times gives different results

I have variables in a rule where the message defines several fields from the same expression.  The strange thing is I get different results in the various fields even though they have the same source.  Does anyone know why this would be?  Here is what is in the message:

HostName=@instance
HostId=@instance
host.name=@instance
host.hostname=@instance

and here is the expression instance they reference:

def host = server.TopologyService.getObject(@event.get("topologyObjectID"));
return host.get("monitoredHost/name");

The results I have recieved have not only been different hosts but in some cases null or the hostname non fqdn (most are hosts with fqdn)