public function get_url(array $parameters, array $to_remove = array())
 {
     $url_params = $this->get_parameters();
     foreach ($parameters as $parameter => $value) {
         $url_params[$parameter] = $value;
     }
     foreach ($to_remove as $param) {
         unset($url_params[$param]);
     }
     $query_args = array();
     foreach ($this->query_args as $query_arg => $value) {
         if (is_array($value)) {
             $value = implode(',', $value);
         }
         if ($value == strip_tags($value)) {
             // Check if value doesn't contain HTML (XSS protection)
             $query_args[] = $query_arg . '=' . $value;
         }
     }
     $query_args[] = $this->arg_id . '=' . UrlSerializedParameterEncoder::encode($url_params);
     return '?' . implode('&', $query_args);
 }
 private static function assertSerializeEquals($unserialized_map, $serialized_string)
 {
     self::assertEquals($serialized_string, UrlSerializedParameterEncoder::encode($unserialized_map));
 }