function _createInternalContent() {

		if (this.isFieldDestroyed()) {
			return; // for destroyed field do nothing on internal control
		}

		const sEditMode = this.getEditMode();
		const oContent = this.getContent();
		const oContentEdit = this.getContentEdit();
		const oContentDisplay = this.getContentDisplay();

		this.getContentFactory()._setUsedConditionType(oContent, oContentEdit, oContentDisplay, sEditMode); // if external content use it's conditionType
		_checkValueHelpExist.call(this, this._getValueHelp()); // as ValueHelp might be created after ID is assigned to Field
		_setAriaAttributes.call(this, false);


		if (oContent ||
			(sEditMode === FieldEditMode.Display && oContentDisplay) ||
			(sEditMode !== FieldEditMode.Display && oContentEdit)) {
			this.destroyInternalContent();
			const aContent = this.getCurrentContent(); // external set content
			if (aContent.length === 1) {
				_setModelOnContent.call(this, aContent[0]); // bind to ManagedObjectModel
			}
			return;
		}

		// Moved to ContentFactory logic
		const iMaxConditions = this.getMaxConditions();
		const aOperators = this.getSupportedOperators();
		const aContentOld = this.getAggregation("_content", []);
		const bMultipleLines = this.getMultipleLines();
		const bIsTriggerable = this._bTriggerable;
		const oContentType = this.getContentFactory().getContentType(this.getBaseType(), this.getMaxConditions(), bIsTriggerable);
		const [oContentOld] = aContentOld;
		const sControlNameOld = oContentOld?.getMetadata().getName().replace(/\./g, "/");
		const sContentMode = this.getContentFactory().getContentMode(oContentType, sEditMode, iMaxConditions, bMultipleLines, aOperators);
		const aControlNames = this._aCustomControlNames || oContentType.getControlNames(sContentMode, aOperators[0]);
		const [sControlName] = aControlNames;
		if (sControlName !== sControlNameOld) {
			this.getContentFactory().setHideOperator(_isOnlyOneSingleValue.call(this, aOperators)); // in single value eq Field hide operator

			if (oContentOld) {
				this.destroyInternalContent();

				if (oContentOld.isA("sap.m.DateTimeField")) {
					// in case of DatePicker remove type with special format options
					this.initDataType();
				}

				this.getContentFactory().updateConditionType();
			}

			const bProvideDefaultValueHelp = !this._getValueHelp() && this.getContentFactory().getProvideDefaultValueHelp(oContentType, aOperators, sEditMode, iMaxConditions, _isOnlyOneSingleValue.call(this, aOperators));
			if (!bProvideDefaultValueHelp && this._sDefaultValueHelp) {
				delete this._sDefaultValueHelp; // do not destroy as might used on other Fields too
			}

			const sId = _getIdForInternalControl.call(this);
			const oDelegate = this.getControlDelegate();
			this._oCreateContentPromise = oDelegate.createContent(this, sContentMode, sId, bProvideDefaultValueHelp);
			this._oCreateContentPromise.then((aControls) => {
				delete this._oCreateContentPromise; // after finished new creation request can be sync again (clear at the beginning as error might break function before end)

				// if already destroyed ContentFactory will not create any content control
				for (const oControl of aControls) {
					if (oControl.isA("sap.ui.mdc.ValueHelp")) { // it's a default value help
						this._sDefaultValueHelp = oControl.getId();
						if (!oControl.getControl()) {
							oControl.connect(this); // if not already connected connect it to transfer data type
						}
						this.getContentFactory().updateConditionType();
						_defaultValueHelpUpdate.call(this, this._sDefaultValueHelp);
						_setAriaAttributes.call(this, false);
						continue;
					}

					if (!oControl._bByContentFactory) { // custom control
						if (!oControl.isA("sap.ui.core.IFormContent")) {
							// TODO: allow different content than allowed in Form? Prevent Layouts and unsupported controls because of accessibiliy issues (label asignment, focus...)
							throw new Error(oContent + " is not a valid content! Only use valid content in " + this);
						}
						if (!this._aCustomControlNames) {
							this._aCustomControlNames = [];
						}
						this._aCustomControlNames.push(oControl.getMetadata().getName().replace(/\./g, "/"));
						_updateContentBinding.call(this, oControl, "_content");
						this.getContentFactory()._setUsedConditionType(this.getContent(), this.getContentEdit(), this.getContentDisplay(), this.getEditMode()); // if external content use it's conditionType
					}

					oControl.attachEvent("parseError", _handleParseError, this);
					oControl.attachEvent("formatError", _handleFormatError, this);
					oControl.attachEvent("validationError", _handleValidationError, this);
					oControl.attachEvent("validationSuccess", _handleValidationSuccess, this);
					oControl.attachEvent("validateFieldGroup", _validateFieldGroup, this);
					_modifyKeyboardHandler.call(this, oControl, oContentType.getUseDefaultEnterHandler());
					_setModelOnContent.call(this, oControl);
					this.addAggregation("_content", oControl);
				}

				_refreshLabel.call(this);
			}).catch((oException) => {
				delete this._oCreateContentPromise; // clean up to not run into endless loop
				throw oException;
			});
		}
	}
Triggers a check if all relevant properties are set to create the internal content control.

To be sure that the check is not called multiple times, it needs
to be checked if there is a pending check.
Multiple calls might happen if properties are changed often or
the check is triggered during a <code>BindingContext</code> update (which is often called in propagation).
@protected