code: public void setParameter(String name, String value) {
  		// Global Fix by alexvinn for Issue 1010 : Unable to set flag parameter to parameterable header
  		if(name == null) {
  			throw new NullPointerException("parameter name is null ! ");
  		}
  		if(value == null) {
  			removeParameter(name);
  			return;
  		}
  		if(isModifiable == ModifiableRule.NotModifiable) {
  			throw new IllegalStateException("it is forbidden to modify the parameters");
  		}
  		if(name.equalsIgnoreCase("tag") && (isModifiable == ModifiableRule.From || isModifiable == ModifiableRule.To)) {
  			throw new IllegalStateException("it is forbidden to set the tag parameter on To or From Header");
  		}
  		if(name.equalsIgnoreCase("branch") && isModifiable == ModifiableRule.Via) {
  			throw new IllegalStateException("it is forbidden to set the branch parameter on the Via Header");
  		}
  		//Fix from abondar for Issue 494 and angelo.marletta for Issue 502
  		this.parameters.put(name.toLowerCase(), value);
  		if(header != null) {
  			try {
  				if (isQuotableParam(name) && (header instanceof ParametersExt)){
  					((ParametersExt) header).setQuotedParameter(name, value);
  				}else{
  					header.setParameter(name, "".equals(value) ? null : value);
  				}
  			} catch (ParseException e) {
  				throw new IllegalArgumentException("Problem setting parameter",e);
  			}
  		}
  	}
docs: /*
  (non-Javadoc)
  @see javax.servlet.sip.Parameterable#setParameter(java.lang.String, java.lang.String)