public void sendMessage(IActor from, String to, TupleExpression msg) throws CruiseRuntimeException {
    IActor target = null;
    if (to.equals("^Self")) {
      target = from;
    }
    else {
      if (actors.containsKey(to)) {
        target = actors.get(to);
      }
      else {
        throw new CruiseRuntimeException("Target actor: " + to + " is unknown");
      }
    }
    if (trace) {
      String fromName = (from != null ? from.getName() : "<startup>");
      System.out.println(fromName + "->" + to + ": " + msg);
    }
    target.enqueueMessage(msg);
  }