/**
  * Get a dialog identifier. Generates a string that can be used as a dialog identifier.
  *
  * @param isServer is set to true if this is the UAS and set to false if this is the UAC
  */
 public String getDialogId(boolean isServer) {
   CallID cid = (CallID) this.getCallId();
   StringBuffer retval = new StringBuffer(cid.getCallId());
   From from = (From) this.getFrom();
   To to = (To) this.getTo();
   if (!isServer) {
     // retval.append(COLON).append(from.getUserAtHostPort());
     if (from.getTag() != null) {
       retval.append(COLON);
       retval.append(from.getTag());
     }
     // retval.append(COLON).append(to.getUserAtHostPort());
     if (to.getTag() != null) {
       retval.append(COLON);
       retval.append(to.getTag());
     }
   } else {
     // retval.append(COLON).append(to.getUserAtHostPort());
     if (to.getTag() != null) {
       retval.append(COLON);
       retval.append(to.getTag());
     }
     // retval.append(COLON).append(from.getUserAtHostPort());
     if (from.getTag() != null) {
       retval.append(COLON);
       retval.append(from.getTag());
     }
   }
   return retval.toString().toLowerCase();
 }
 /** Encode the body of this header (the stuff that follows headerName). A.K.A headerValue. */
 protected String encodeBody() {
   StringBuffer encoding = new StringBuffer();
   encoding.append(sentProtocol.encode()).append(SP).append(sentBy.encode());
   if (!parameters.isEmpty()) {
     encoding.append(SEMICOLON).append(parameters.encode());
   }
   if (comment != null) {
     encoding.append(SP).append(LPAREN).append(comment).append(RPAREN);
   }
   return encoding.toString();
 }