RakuAST::StatementList.new(
  RakuAST::Doc::Block.new(
    type      => "document",
    directive => True,
    config    => ${:auto-toc(RakuAST::Term::Enum.from-identifier('False'))}
  ),
  RakuAST::Doc::Block.new(
    type       => "rakudoc",
    paragraphs => (
      RakuAST::Doc::Block.new(
        type        => "TITLE",
        abbreviated => True,
        paragraphs  => (
          "Gnome::GObject::Object\n\n",
        )
      ),
      RakuAST::Doc::Block.new(
        type        => "head",
        level       => "3",
        abbreviated => True,
        paragraphs  => (
          "Callback handlers\n\n",
        )
      ),
      RakuAST::Doc::Block.new(
        type       => "item",
        paragraphs => (
          "Simple handlers; e.g. a click event handler has only named arguments and are optional.\n",
        )
      ),
      RakuAST::Doc::Block.new(
        type       => "item",
        paragraphs => (
          RakuAST::Doc::Paragraph.new(
            "Complex handlers (only a bit) also have positional arguments and ",
            RakuAST::Doc::Markup.new(
              letter => "B",
              opener => "<",
              closer => ">",
              atoms  => (
                "MUST",
              )
            ),
            " be typed because they are checked to create a signature for the call to a native subroutine. You can use the raku native types like ",
            RakuAST::Doc::Markup.new(
              letter => "C",
              opener => "<",
              closer => ">",
              atoms  => (
                "int32",
              )
            ),
            " but several types are automatically converted to native types. The types such as gboolean, etc are defined in ",
            RakuAST::Doc::Markup.new(
              letter => "B",
              opener => "<",
              closer => ">",
              atoms  => (
                "Gnome::N::GlibToRakuTypes",
              )
            ),
            ".\n\n"
          ),
          RakuAST::Doc::Block.new(
            type       => "table",
            config     => ${:caption(RakuAST::Circumfix::Parentheses.new(
              RakuAST::SemiList.new(
                RakuAST::Statement::Expression.new(
                  expression => RakuAST::QuotedString.new(
                    segments   => (
                      RakuAST::StrLiteral.new(""),
                    )
                  )
                )
              )
            )), :header-row(RakuAST::IntLiteral.new(0)), :toc(RakuAST::Term::Enum.from-identifier('False'))},
            paragraphs => (
              RakuAST::Doc::LegacyRow.new(
                column-dividers => "||",
                column-offsets  => (12,31),
                cells           => (
                  "Raku type",
                  "Native glib type",
                  "Native Raku type",
                )
              ),
              "==========|==================|=================\n",
              RakuAST::Doc::LegacyRow.new(
                column-dividers => "||",
                column-offsets  => (12,31),
                cells           => (
                  "Bool     ",
                  "gboolean        ",
                  "int32           ",
                )
              ),
              RakuAST::Doc::LegacyRow.new(
                column-dividers => "||",
                column-offsets  => (12,31),
                cells           => (
                  "UInt     ",
                  "guint           ",
                  "uint32/uint64   ",
                )
              ),
              RakuAST::Doc::LegacyRow.new(
                column-dividers => "||",
                column-offsets  => (12,31),
                cells           => (
                  "Int      ",
                  "gint            ",
                  "int32/int64     ",
                )
              ),
              RakuAST::Doc::LegacyRow.new(
                column-dividers => "||",
                column-offsets  => (12,31),
                cells           => (
                  "Num      ",
                  "gfloat          ",
                  "num32           ",
                )
              ),
              RakuAST::Doc::LegacyRow.new(
                column-dividers => "||",
                column-offsets  => (12,31),
                cells           => (
                  "Rat      ",
                  "gdouble         ",
                  "num64           ",
                )
              ),
            )
          ),
        )
      ),
      RakuAST::Doc::Block.new(
        type       => "item",
        paragraphs => (
          RakuAST::Doc::Paragraph.new(
            "Some handlers must return a value and is used by the calling process. You ",
            RakuAST::Doc::Markup.new(
              letter => "B",
              opener => "<",
              closer => ">",
              atoms  => (
                "MUST",
              )
            ),
            " describe this too in the handlers API, otherwise the returned value is thrown away.\n"
          ),
        )
      ),
      RakuAST::Doc::Block.new(
        type       => "item",
        paragraphs => (
          RakuAST::Doc::Paragraph.new(
            "Any user options are provided via named arguments from the call to ",
            RakuAST::Doc::Markup.new(
              letter => "C",
              opener => "<",
              closer => ">",
              atoms  => (
                "register-signal()",
              )
            ),
            ".\n"
          ),
        )
      ),
      RakuAST::Doc::Block.new(
        type       => "table",
        config     => ${:caption(RakuAST::Circumfix::Parentheses.new(
          RakuAST::SemiList.new(
            RakuAST::Statement::Expression.new(
              expression => RakuAST::QuotedString.new(
                segments   => (
                  RakuAST::StrLiteral.new(""),
                )
              )
            )
          )
        )), :header-row(RakuAST::IntLiteral.new(0)), :toc(RakuAST::Term::Enum.from-identifier('False'))},
        paragraphs => (
          RakuAST::Doc::LegacyRow.new(
            column-dividers => "||",
            column-offsets  => (12,31),
            cells           => (
              "Raku type",
              "Native glib type",
              "Native Raku type",
            )
          ),
          "==========|==================|=================\n",
          RakuAST::Doc::LegacyRow.new(
            column-dividers => "||",
            column-offsets  => (12,31),
            cells           => (
              "Bool     ",
              "gboolean        ",
              "int32",
            )
          ),
          RakuAST::Doc::LegacyRow.new(
            column-dividers => "||",
            column-offsets  => (12,31),
            cells           => (
              "UInt     ",
              "guint           ",
              "uint32/uint64",
            )
          ),
          RakuAST::Doc::LegacyRow.new(
            column-dividers => "||",
            column-offsets  => (12,31),
            cells           => (
              "Int      ",
              "gint            ",
              "int32/int64",
            )
          ),
          RakuAST::Doc::LegacyRow.new(
            column-dividers => "||",
            column-offsets  => (12,31),
            cells           => (
              "Num      ",
              "gfloat          ",
              "num32",
            )
          ),
          RakuAST::Doc::LegacyRow.new(
            column-dividers => "||",
            column-offsets  => (12,31),
            cells           => (
              "Rat      ",
              "gdouble         ",
              "num64",
            )
          ),
        )
      ),
    )
  )
)