code: public boolean equalType(HttpMessage msg) {
  	    boolean result = false;
  
  	    // compare method
  	    if (!this.getRequestHeader().getMethod().equalsIgnoreCase(msg.getRequestHeader().getMethod())) {
  	        return false;
  	    }
  	    
  	    // compare host, port and URI
  	    URI uri1 = this.getRequestHeader().getURI();
  	    URI uri2 = msg.getRequestHeader().getURI();
  
  	    
  	    try {
              if (uri1.getHost() == null || uri2.getHost() == null || !uri1.getHost().equalsIgnoreCase(uri2.getHost())) {
                  return false;
              }
              
              if (uri1.getPort() != uri2.getPort()) {
                  return false;
              }
              
              String path1 = uri1.getPath();
              String path2 = uri2.getPath();
  
              if (path1 == null && path2 == null) {
                  return true;
              }
              
              if (path1 != null && path2 != null && !path1.equalsIgnoreCase(path2)) {
                  return false;
              } else {
                  if (path1 == null || path2 == null) {
                      return false;
                  }
              }
  
              if (!queryEquals(msg)) {
                  return false;
              }
              
              result = true;
              
          } catch (URIException e) {
  			// ZAP: log error
  			log.error(e.getMessage(), e);
          }
          
  	    return result;
  	}
docs: Compares this {@code HttpMessage} against another. Messages are equal
  type if the host, port, path and parameter names are equal. Even though
  the query values may differ. For POST this assumes x-www-form-urlencoded,
  for other types (such as JSON) this means that parameter names and values
  (the full request body) could be included.
  
  @param msg
  the message against which this {@code HttpMessage} is being
  compared.
  @return {@code true} if the messages are considered equal,
  {@code false} otherwise