code: def create_layout(self, exam_lex, toolbar_lex):
          
          lexer, exam_lex, toolbar_lex = get_lexers(self.shell_ctx.lexer, exam_lex, toolbar_lex)
  
          if not any(isinstance(processor, DefaultPrompt) for processor in self.input_processors):
              self.input_processors.append(DefaultPrompt(self.get_prompt_tokens))
  
          layout_lower = ConditionalContainer(
              HSplit([
                  get_anyhline(self.shell_ctx.config),
                  get_descriptions(self.shell_ctx.config, exam_lex, lexer),
                  get_examplehline(self.shell_ctx.config),
                  get_example(self.shell_ctx.config, exam_lex),
  
                  ConditionalContainer(
                      get_hline(),
                      filter=self.show_default | self.show_symbol
                  ),
                  ConditionalContainer(
                      Window(
                          content=BufferControl(
                              buffer_name='default_values',
                              lexer=lexer
                          )
                      ),
                      filter=self.show_default
                  ),
                  ConditionalContainer(
                      get_hline(),
                      filter=self.show_default & self.show_symbol
                  ),
                  ConditionalContainer(
                      Window(
                          content=BufferControl(
                              buffer_name='symbols',
                              lexer=exam_lex
                          )
                      ),
                      filter=self.show_symbol
                  ),
                  ConditionalContainer(
                      Window(
                          content=BufferControl(
                              buffer_name='progress',
                              lexer=lexer
                          )
                      ),
                      filter=self.show_progress
                  ),
                  Window(
                      content=BufferControl(
                          buffer_name='bottom_toolbar',
                          lexer=toolbar_lex
                      ),
                  ),
              ]),
              filter=~IsDone() & RendererHeightIsKnown()
          )
  
          layout_full = HSplit([
              FloatContainer(
                  Window(
                      BufferControl(
                          input_processors=self.input_processors,
                          lexer=lexer,
                          preview_search=Always()),
                      get_height=get_height,
                  ),
                  [
                      Float(xcursor=True,
                            ycursor=True,
                            content=CompletionsMenu(
                                max_height=MAX_COMPLETION,
                                scroll_offset=1,
                                extra_filter=(HasFocus(DEFAULT_BUFFER))))]),
              layout_lower
          ])
  
          return layout_full
docs: creates the layout