code: function() {
  
  		/**
  		 * Create the popout windows straight away. If popouts are blocked
  		 * an error is thrown on the same 'thread' rather than a timeout and can
  		 * be caught. This also prevents any further initilisation from taking place.
  		 */
  		if( this._subWindowsCreated === false ) {
  			this._createSubWindows();
  			this._subWindowsCreated = true;
  		}
  
  
  		/**
  		 * If the document isn't ready yet, wait for it.
  		 */
  		if( document.readyState === 'loading' || document.body === null ) {
  			$( document ).ready( lm.utils.fnBind( this.init, this ) );
  			return;
  		}
  
  		/**
  		 * If this is a subwindow, wait a few milliseconds for the original
  		 * page's js calls to be executed, then replace the bodies content
  		 * with GoldenLayout
  		 */
  		if( this.isSubWindow === true && this._creationTimeoutPassed === false ) {
  			setTimeout( lm.utils.fnBind( this.init, this ), 7 );
  			this._creationTimeoutPassed = true;
  			return;
  		}
  
  		if( this.isSubWindow === true ) {
  			this._adjustToWindowMode();
  		}
  
  		this._setContainer();
  		this.dropTargetIndicator = new lm.controls.DropTargetIndicator( this.container );
  		this.transitionIndicator = new lm.controls.TransitionIndicator();
  		this.updateSize();
  		this._create( this.config );
  		this._bindEvents();
  		this.isInitialised = true;
  		this._adjustColumnsResponsive();
  		this.emit( 'initialised' );
  	}
docs: Creates the actual layout. Must be called after all initial components
  are registered. Recurses through the configuration and sets up
  the item tree.
  
  If called before the document is ready it adds itself as a listener
  to the document.ready event
  
  @public
  
  @returns {void}