code: protected void doSanityCheck() throws EXIException {
  
  		// Self-contained elements do not work with re-ordered
  		if (fidelityOptions.isFidelityEnabled(FidelityOptions.FEATURE_SC)
  				&& (codingMode == CodingMode.COMPRESSION || codingMode == CodingMode.PRE_COMPRESSION)) {
  			throw new EXIException(
  					"(Pre-)Compression and selfContained elements cannot work together");
  		}
  
  		if (!this.grammar.isSchemaInformed()) {
  			this.maximumNumberOfBuiltInElementGrammars = -1;
  			this.maximumNumberOfBuiltInProductions = -1;
  			this.grammarLearningDisabled = false;
  			// TODO warn user?
  		}
  
  		// blockSize in NON compression mode? Just ignore it!
  
  		// canonical EXI (http://www.w3.org/TR/exi-c14n/)
  		if (this.getEncodingOptions().isOptionEnabled(
  				EncodingOptions.CANONICAL_EXI)) {
  			updateFactoryAccordingCanonicalEXI();
  		}
  	}
docs: some consistency and sanity checks