text: /**
   * @name exports
   * @summary ValueSetCodeSystem Class
   */
  module.exports = class ValueSetCodeSystem {
  	constructor(opts) {
  		// Create an object to store all props
  		Object.defineProperty(this, '__data', { value: {} });
  
  		// Define getters and setters as enumerable
  
  		Object.defineProperty(this, '_id', {
  			enumerable: true,
  			get: () => this.__data._id,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._id = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'id', {
  			enumerable: true,
  			get: () => this.__data.id,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.id = value;
  			},
  		});
  
  		Object.defineProperty(this, 'extension', {
  			enumerable: true,
  			get: () => this.__data.extension,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Extension = require('./extension.js');
  				this.__data.extension = Array.isArray(value) ? value.map(v => new Extension(v)) : [new Extension(value)];
  			},
  		});
  
  		Object.defineProperty(this, 'modifierExtension', {
  			enumerable: true,
  			get: () => this.__data.modifierExtension,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Extension = require('./extension.js');
  				this.__data.modifierExtension = Array.isArray(value)
  					? value.map(v => new Extension(v))
  					: [new Extension(value)];
  			},
  		});
  
  		Object.defineProperty(this, '_system', {
  			enumerable: true,
  			get: () => this.__data._system,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._system = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'system', {
  			enumerable: true,
  			get: () => this.__data.system,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.system = value;
  			},
  		});
  
  		Object.defineProperty(this, '_version', {
  			enumerable: true,
  			get: () => this.__data._version,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._version = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'version', {
  			enumerable: true,
  			get: () => this.__data.version,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.version = value;
  			},
  		});
  
  		Object.defineProperty(this, '_caseSensitive', {
  			enumerable: true,
  			get: () => this.__data._caseSensitive,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._caseSensitive = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'caseSensitive', {
  			enumerable: true,
  			get: () => this.__data.caseSensitive,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.caseSensitive = value;
  			},
  		});
  
  		Object.defineProperty(this, 'concept', {
  			enumerable: true,
  			get: () => this.__data.concept,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let ValueSetCodeSystemConcept = require('./valuesetcodesystemconcept.js');
  				this.__data.concept = Array.isArray(value)
  					? value.map(v => new ValueSetCodeSystemConcept(v))
  					: [new ValueSetCodeSystemConcept(value)];
  			},
  		});
  
  		// Merge in any defaults
  		Object.assign(this, opts);
  
  		// Define a default non-writable resourceType property
  		Object.defineProperty(this, 'resourceType', {
  			value: 'ValueSetCodeSystem',
  			enumerable: true,
  			writable: false,
  		});
  	}
  
  	static get resourceType() {
  		return 'ValueSetCodeSystem';
  	}
  
  	toJSON() {
  		return {
  			_id: this._id && this._id.toJSON(),
  			id: this.id,
  			extension: this.extension && this.extension.map(v => v.toJSON()),
  			modifierExtension: this.modifierExtension && this.modifierExtension.map(v => v.toJSON()),
  			_system: this._system && this._system.toJSON(),
  			system: this.system,
  			_version: this._version && this._version.toJSON(),
  			version: this.version,
  			_caseSensitive: this._caseSensitive && this._caseSensitive.toJSON(),
  			caseSensitive: this.caseSensitive,
  			concept: this.concept && this.concept.map(v => v.toJSON()),
  		};
  	}
  };
  