FlexibleColumnLayoutSemanticHelper = function (oFlexibleColumnLayout, oSettings) {
		var oModeToMaxColumnsCountMapping = {
				Normal: 3,
				MasterDetail: 2,
				SingleColumn: 1
			},
			iInitial,
			iMax;
		oSettings || (oSettings = {});
		this._oFCL = oFlexibleColumnLayout;

		// Layout types
		this._defaultLayoutType = LT.OneColumn;
		this._defaultTwoColumnLayoutType = [LT.TwoColumnsBeginExpanded, LT.TwoColumnsMidExpanded].indexOf(oSettings.defaultTwoColumnLayoutType) !== -1 ?
			oSettings.defaultTwoColumnLayoutType : LT.TwoColumnsBeginExpanded;
		this._defaultThreeColumnLayoutType = [LT.ThreeColumnsMidExpanded, LT.ThreeColumnsEndExpanded].indexOf(oSettings.defaultThreeColumnLayoutType) !== -1 ?
			oSettings.defaultThreeColumnLayoutType : LT.ThreeColumnsMidExpanded;

		// Maximum number of columns and mode (deprecated)
		if (["Normal", "MasterDetail", "SingleColumn"].indexOf(oSettings.mode) !== -1 && !oSettings.maxColumnsCount) {
			iMax = oModeToMaxColumnsCountMapping[oSettings.mode];
		} else {
			iMax = oSettings.maxColumnsCount ? parseInt(oSettings.maxColumnsCount) : 3;
			if (iMax < 1 || iMax > 3) {
				iMax = 3;
			}
		}
		this._maxColumnsCount = iMax;

		// Initial number of columns (1 by default, can be set to 2 for MasterDetail or Normal modes only)
		iInitial = oSettings.initialColumnsCount ? parseInt(oSettings.initialColumnsCount) : 1;
		if (iInitial < 1 || iInitial > 2 || this._maxColumnsCount === 1) {
			iInitial = 1;
		}
		this._initialColumnsCount = iInitial;
	}
Constructor for an sap.f.FlexibleColumnLayoutSemanticHelper.

@class
Helper class, facilitating the implementation of the recommended UX design of a <code>sap.f.FlexibleColumnLayout</code>-based app.

<b>Note:</b> Using this class is not mandatory in order to build an app with <code>sap.f.FlexibleColumnLayout</code>, but exists for convenience only.

<ul>The usage of <code>sap.f.FlexibleColumnLayoutSemanticHelper</code> revolves around two main methods:
<li><code>getCurrentUIState</code>Suggests which action buttons to show in each <code>sap.f.FlexibleColumnLayout</code> column,
based on the current control state (number and visibility of columns, layout, etc..)</li>
<li><code>getNextUIState</code>Suggests which <code>layout</code> to use when navigating to another view level (e.g. from one view to two views).</li></ul>

Sample usage of the class:

<pre>
<code>
 var helper = sap.f.FlexibleColumnLayoutSemanticHelper.getInstanceFor(myFlexibleColumnLayout);
 helper.getCurrentUIState();
 helper.getNextUIState(2);
 helper.getNextUIState(0);
</code>
</pre>

Calling <code>getCurrentUIState()</code> will return information which action buttons (Close, FullScreen, ExitFullScreen)
must be currently shown in which column, according to UX guidelines, as well as to what layout clicking them should lead.

Calling <code>getNextUIState(2)</code> will return information about the expected layout and action buttons if the
application should display three views (list-detail-detail), based on the current state.

Similarly, calling <code>getNextUIState(0)</code> will return information about the expected layout and action buttons
if the application should display the initial view only (list), based on the current state.

For more information, see {@link sap.f.FlexibleColumnLayoutSemanticHelper#getCurrentUIState} and {@link sap.f.FlexibleColumnLayoutSemanticHelper#getNextUIState}

@version ${version}
@param {sap.f.FlexibleColumnLayout} oFlexibleColumnLayout
The <code>sap.f.FlexibleColumnLayout</code> object whose state will be manipulated.

@param {object} oSettings Determines the rules that will be used by the helper.

@param {sap.f.LayoutType} [oSettings.defaultTwoColumnLayoutType=sap.f.LayoutType.TwoColumnsBeginExpanded]
Determines what two-column layout type will be suggested by default:
<code>sap.f.LayoutType.TwoColumnsBeginExpanded</code> or <code>sap.f.LayoutType.TwoColumnsMidExpanded</code>.

@param {sap.f.LayoutType} [oSettings.defaultThreeColumnLayoutType=sap.f.LayoutType.ThreeColumnsMidExpanded]
Determines what three-column layout type will be suggested by default:
<code>sap.f.LayoutType.ThreeColumnsMidExpanded</code> or <code>sap.f.LayoutType.ThreeColumnsEndExpanded</code>.

@param {int} oSettings.maxColumnsCount
Determines the maximum number of columns that will be displayed side by side.

<ul>Possible values:

<li>Value of <code>1</code> only single-column layouts will be suggested.</li>

<li>Value of <code>2</code> Up to 2-column layouts will be suggested.</li>

<li>Value of <code>3</code> (default) - Up to 3-column layouts will be suggested.</li></ul>

@param {int} oSettings.initialColumnsCount
Determines whether a single-column or a 2-column layout will be suggested
for logical level 0.

<ul>Possible values:

<li>Value of <code>1</code> (default) - A single-column layout will be suggested
for logical level 0.</li>

<li>Value of <code>2</code> - A 2-column layout will be suggested for logical level 0.</li></ul>

@param {string} [oSettings.mode]
<b>Deprecated as of version 1.50</b>, use <code>maxColumnsCount</code> param
instead.

Determines the suggested layout types: <code>Normal</code> (3-column layouts),
<code>MasterDetail</code> (2-column layouts for the first two pages, all other
pages will open in fullscreen), and <code>SingleColumn</code> (one page at a
time only).

@public
@since 1.46.0
@alias sap.f.FlexibleColumnLayoutSemanticHelper