code: public static boolean isSystemHeader(ModifiableRule modifiableRule) {
  		if (modifiableRule == ModifiableRule.NotModifiable || modifiableRule == ModifiableRule.ContactSystem || modifiableRule == ModifiableRule.ProxyRecordRouteNotModifiable) {
  			return true;
  		} else {
  			return false;
  		}
  	}
docs: Applications must not add, delete, or modify so-called "system" headers.
  These are header fields that the servlet container manages: From, To,
  Call-ID, CSeq, Via, Route (except through pushRoute), Record-Route.
  Contact is a system header field in messages other than REGISTER requests
  and responses, 3xx and 485 responses, and 200/OPTIONS responses.
  Additionally, for containers implementing the reliable provisional
  responses extension, RAck and RSeq are considered system headers also.
  
  This method should return true if passed name - full or compact is name
  of system header in context of this message. Each subclass has to
  implement it in the manner that it conforms to semantics of wrapping
  class
  
  @param headerName -
  either long or compact header name
  @return