code: def sections(self) -> TypeSections:
      def make_item(obj: dc.Object | dc.Alias) -> layout.Item:
          """
          Return item of typing object
          """
          return layout.Item(
              name=obj.canonical_path,
              obj=obj,
              uri=f"{self.base_uri}.html#{obj.canonical_path}",
              dispname=obj.canonical_path,
          )
  
      members = list(get_object(self.module_path).members.values())
      return TypeSections(
          protocols_items=[
              make_item(m) for m in members if is_protocol(m)
          ],
          typevars_items=[
              make_item(m) for m in members if is_typevar(m)
          ],
          typealiases_items=[
              make_item(m) for m in members if is_typealias(m)
          ],
          renderer=self.renderer,
      )
  
imports: from __future__ import annotations
  from dataclasses import dataclass
  from functools import cached_property
  from pathlib import Path
  from typing import TYPE_CHECKING, cast
  from quartodoc import layout
  from quartodoc.autosummary import Builder, get_object
  from quartodoc.pandoc.blocks import Block, BlockContent, Blocks, Header
  from .pandoc.blocks import Meta
  from .render import RenderDocAttribute, RenderDocClass, get_render_type
  from .utils import griffe_to_doc, is_protocol, is_typealias, is_typevar
label_desc: Use image node_id 4 for calling the TypeInformation obj's underlying member method code with example usage: obj.sections() and returns: TypeSections, layout