code: protected void sequence_CharacterRange(ISerializationContext context, CharacterRange semanticObject) {
  		if (errorAcceptor != null) {
  			if (transientValues.isValueTransient(semanticObject, XtextPackage.Literals.CHARACTER_RANGE__LEFT) == ValueTransient.YES)
  				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, XtextPackage.Literals.CHARACTER_RANGE__LEFT));
  			if (transientValues.isValueTransient(semanticObject, XtextPackage.Literals.CHARACTER_RANGE__RIGHT) == ValueTransient.YES)
  				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, XtextPackage.Literals.CHARACTER_RANGE__RIGHT));
  		}
  		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
  		feeder.accept(grammarAccess.getCharacterRangeAccess().getCharacterRangeLeftAction_1_0(), semanticObject.getLeft());
  		feeder.accept(grammarAccess.getCharacterRangeAccess().getRightKeywordParserRuleCall_1_2_0(), semanticObject.getRight());
  		feeder.finish();
  	}
docs: Contexts:
  CharacterRange returns CharacterRange
  
  Constraint:
  (left=CharacterRange_CharacterRange_1_0 right=Keyword)