@Override
    public Host info(Host host) throws CommunicationException {
        if (host == null) {
            throw new NullPointerException("A null host was given.");
        }

        try {
            SimulationHandle simulationHandle = getRemoteHandle(host);
            PeerReference peerReference = simulationHandle.getInfo();
            Host result = Deserializer.deserializeHost(peerReference);
            return result;
        } catch (CommunicationException e) {
            throw new CommunicationException(
                    "Host " + host + ":" + host.getPort() + " cannot be reached.");
        }
    }