%%{init: {'themeVariables': { 'fontSize': '12px'}}}%%
graph TD
    classDef path fill:#eee,stroke:#000,color:#000
    classDef plan fill:#fff,stroke-width:1px,color:#000
    classDef itemplan fill:#fff,stroke-width:2px,color:#000
    classDef unbatchedplan fill:#dff,stroke-width:1px,color:#000
    classDef sideeffectplan fill:#fcc,stroke-width:2px,color:#000
    classDef bucket fill:#f6f6f6,color:#000,stroke-width:2px,text-align:left


    %% plan dependencies
    Object60{{"Object[60∈0] ➊<br />ᐸ{reverse,orders,alias,codec}ᐳ"}}:::plan
    Lambda53{{"Lambda[53∈0] ➊<br />ᐸcalculateShouldReverseOrderᐳ"}}:::plan
    Constant57{{"Constant[57∈0] ➊<br />ᐸ[ { fragment: { n: [Array], f: 0, c: 266, [Symbol(pg-sql2-tyᐳ"}}:::plan
    Constant58{{"Constant[58∈0] ➊<br />ᐸsql.identifier(”single_table_items”)ᐳ"}}:::plan
    Constant59{{"Constant[59∈0] ➊<br />ᐸRecordCodec(singleTableItems)ᐳ"}}:::plan
    Lambda53 & Constant57 & Constant58 & Constant59 --> Object60
    Object12{{"Object[12∈0] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Access10{{"Access[10∈0] ➊<br />ᐸ2.pgSettingsᐳ"}}:::plan
    Access11{{"Access[11∈0] ➊<br />ᐸ2.withPgClientᐳ"}}:::plan
    Access10 & Access11 --> Object12
    __Value2["__Value[2∈0] ➊<br />ᐸcontextᐳ"]:::plan
    __Value2 --> Access10
    __Value2 --> Access11
    Constant81{{"Constant[81∈0] ➊<br />ᐸ§{ first: null, last: null, cursorLower: null, cursorUpper: ᐳ"}}:::plan
    Constant81 --> Lambda53
    Lambda56{{"Lambda[56∈0] ➊<br />ᐸcalculateLimitAndOffsetSQLᐳ"}}:::plan
    Constant82{{"Constant[82∈0] ➊<br />ᐸ§{ first: null, last: null, cursorLower: null, cursorUpper: ᐳ"}}:::plan
    Constant82 --> Lambda56
    Lambda61{{"Lambda[61∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Object60 --> Lambda61
    Lambda66{{"Lambda[66∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Constant83{{"Constant[83∈0] ➊<br />ᐸ§{ reverse: false, orders: [ { fragment: [Object], codec: Coᐳ"}}:::plan
    Constant83 --> Lambda66
    __Value4["__Value[4∈0] ➊<br />ᐸrootValueᐳ"]:::plan
    Connection13{{"Connection[13∈0] ➊<br />ᐸ9ᐳ"}}:::plan
    Constant71{{"Constant[71∈0] ➊<br />ᐸ[ { codec: Codec(int4), fragment: { n: [Array], f: 0, c: 266ᐳ"}}:::plan
    Constant72{{"Constant[72∈0] ➊<br />ᐸsql.identifier(”single_table_items”)ᐳ"}}:::plan
    Constant84{{"Constant[84∈0] ➊<br />ᐸ§{ reverse: false, orders: [ { codec: Codec(int4), fragment:ᐳ"}}:::plan
    PgSelect14[["PgSelect[14∈1] ➊<br />ᐸsingle_table_itemsᐳ"]]:::plan
    Lambda75{{"Lambda[75∈1] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Lambda80{{"Lambda[80∈1] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Object12 & Connection13 & Lambda53 & Lambda56 & Lambda75 & Lambda80 --> PgSelect14
    Object74{{"Object[74∈1] ➊<br />ᐸ{reverse,orders,alias,codec}ᐳ"}}:::plan
    Lambda53 & Constant71 & Constant72 & Constant59 --> Object74
    Object74 --> Lambda75
    Constant84 --> Lambda80
    __Item15[/"__Item[15∈2]<br />ᐸ14ᐳ"\]:::itemplan
    PgSelect14 ==> __Item15
    PgSelectSingle16{{"PgSelectSingle[16∈2]<br />ᐸsingle_table_itemsᐳ"}}:::plan
    __Item15 --> PgSelectSingle16
    PgSelect19[["PgSelect[19∈3]<br />ᐸsingle_table_itemsᐳ<br />ᐳSingleTableTopic<br />ᐳSingleTablePost<br />ᐳSingleTableDivider<br />ᐳSingleTableChecklist<br />ᐳSingleTableChecklistItem"]]:::plan
    PgClassExpression17{{"PgClassExpression[17∈3]<br />ᐸ__single_t...ems__.”id”ᐳ<br />ᐳSingleTableTopic"}}:::plan
    Object12 & PgClassExpression17 & Lambda53 & Lambda56 & Lambda61 & Lambda66 --> PgSelect19
    PgSelectSingle16 --> PgClassExpression17
    PgClassExpression18{{"PgClassExpression[18∈3]<br />ᐸ__single_t...s__.”type”ᐳ<br />ᐳSingleTableTopic"}}:::plan
    PgSelectSingle16 --> PgClassExpression18
    __Item23[/"__Item[23∈4]<br />ᐸ19ᐳ<br />ᐳSingleTableTopic"\]:::itemplan
    PgSelect19 ==> __Item23
    PgSelectSingle24{{"PgSelectSingle[24∈4]<br />ᐸsingle_table_itemsᐳ"}}:::plan
    __Item23 --> PgSelectSingle24
    PgClassExpression25{{"PgClassExpression[25∈5]<br />ᐸ__single_t...ems__.”id”ᐳ<br />ᐳSingleTableTopicᐳSingleTableTopic"}}:::plan
    PgSelectSingle24 --> PgClassExpression25
    PgClassExpression26{{"PgClassExpression[26∈5]<br />ᐸ__single_t...”position”ᐳ<br />ᐳSingleTableTopicᐳSingleTableTopic"}}:::plan
    PgSelectSingle24 --> PgClassExpression26
    PgClassExpression30{{"PgClassExpression[30∈6]<br />ᐸ__single_t...ems__.”id”ᐳ<br />ᐳSingleTablePostᐳSingleTableTopic<br />ᐳSingleTablePostᐳSingleTablePost"}}:::plan
    PgSelectSingle24 --> PgClassExpression30
    PgClassExpression31{{"PgClassExpression[31∈6]<br />ᐸ__single_t...”position”ᐳ<br />ᐳSingleTablePostᐳSingleTableTopic"}}:::plan
    PgSelectSingle24 --> PgClassExpression31
    PgClassExpression36{{"PgClassExpression[36∈7]<br />ᐸ__single_t...ems__.”id”ᐳ<br />ᐳSingleTableDividerᐳSingleTableTopic<br />ᐳSingleTableDividerᐳSingleTablePost"}}:::plan
    PgSelectSingle24 --> PgClassExpression36
    PgClassExpression37{{"PgClassExpression[37∈7]<br />ᐸ__single_t...”position”ᐳ<br />ᐳSingleTableDividerᐳSingleTableTopic"}}:::plan
    PgSelectSingle24 --> PgClassExpression37
    PgClassExpression42{{"PgClassExpression[42∈8]<br />ᐸ__single_t...ems__.”id”ᐳ<br />ᐳSingleTableChecklistᐳSingleTableTopic<br />ᐳSingleTableChecklistᐳSingleTablePost"}}:::plan
    PgSelectSingle24 --> PgClassExpression42
    PgClassExpression43{{"PgClassExpression[43∈8]<br />ᐸ__single_t...”position”ᐳ<br />ᐳSingleTableChecklistᐳSingleTableTopic"}}:::plan
    PgSelectSingle24 --> PgClassExpression43
    PgClassExpression48{{"PgClassExpression[48∈9]<br />ᐸ__single_t...ems__.”id”ᐳ<br />ᐳSingleTableChecklistItemᐳSingleTableTopic<br />ᐳSingleTableChecklistItemᐳSingleTablePost"}}:::plan
    PgSelectSingle24 --> PgClassExpression48
    PgClassExpression49{{"PgClassExpression[49∈9]<br />ᐸ__single_t...”position”ᐳ<br />ᐳSingleTableChecklistItemᐳSingleTableTopic"}}:::plan
    PgSelectSingle24 --> PgClassExpression49

    %% define steps

    subgraph "Buckets for queries/polymorphic/single-table-items-and-children"
    Bucket0("Bucket 0 (root)"):::bucket
    classDef bucket0 stroke:#696969
    class Bucket0,__Value2,__Value4,Access10,Access11,Object12,Connection13,Lambda53,Lambda56,Constant57,Constant58,Constant59,Object60,Lambda61,Lambda66,Constant71,Constant72,Constant81,Constant82,Constant83,Constant84 bucket0
    Bucket1("Bucket 1 (nullableBoundary)<br />Deps: 12, 13, 53, 56, 71, 72, 59, 84, 61, 66<br /><br />ROOT Connectionᐸ9ᐳ[13]<br />1: <br />ᐳ: Object[74], Lambda[80], Lambda[75]<br />2: PgSelect[14]"):::bucket
    classDef bucket1 stroke:#00bfff
    class Bucket1,PgSelect14,Object74,Lambda75,Lambda80 bucket1
    Bucket2("Bucket 2 (listItem)<br />Deps: 12, 53, 56, 61, 66<br /><br />ROOT __Item{2}ᐸ14ᐳ[15]"):::bucket
    classDef bucket2 stroke:#7f007f
    class Bucket2,__Item15,PgSelectSingle16 bucket2
    Bucket3("Bucket 3 (polymorphic)<br />SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem<br />Deps: 16, 12, 53, 56, 61, 66<br />ᐳSingleTableTopic<br />ᐳSingleTablePost<br />ᐳSingleTableDivider<br />ᐳSingleTableChecklist<br />ᐳSingleTableChecklistItem<br /><br />1: <br />ᐳ: 17, 18<br />2: PgSelect[19]"):::bucket
    classDef bucket3 stroke:#ffa500
    class Bucket3,PgClassExpression17,PgClassExpression18,PgSelect19 bucket3
    Bucket4("Bucket 4 (listItem)<br /><br />ROOT __Item{4}ᐸ19ᐳ[23]"):::bucket
    classDef bucket4 stroke:#0000ff
    class Bucket4,__Item23,PgSelectSingle24 bucket4
    Bucket5("Bucket 5 (polymorphic)<br />SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem<br />Deps: 24<br />ᐳSingleTableTopicᐳSingleTableTopic<br />ᐳSingleTableTopicᐳSingleTablePost<br />ᐳSingleTableTopicᐳSingleTableDivider<br />ᐳSingleTableTopicᐳSingleTableChecklist<br />ᐳSingleTableTopicᐳSingleTableChecklistItem"):::bucket
    classDef bucket5 stroke:#7fff00
    class Bucket5,PgClassExpression25,PgClassExpression26 bucket5
    Bucket6("Bucket 6 (polymorphic)<br />SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem<br />Deps: 24<br />ᐳSingleTablePostᐳSingleTableTopic<br />ᐳSingleTablePostᐳSingleTablePost<br />ᐳSingleTablePostᐳSingleTableDivider<br />ᐳSingleTablePostᐳSingleTableChecklist<br />ᐳSingleTablePostᐳSingleTableChecklistItem"):::bucket
    classDef bucket6 stroke:#ff1493
    class Bucket6,PgClassExpression30,PgClassExpression31 bucket6
    Bucket7("Bucket 7 (polymorphic)<br />SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem<br />Deps: 24<br />ᐳSingleTableDividerᐳSingleTableTopic<br />ᐳSingleTableDividerᐳSingleTablePost<br />ᐳSingleTableDividerᐳSingleTableDivider<br />ᐳSingleTableDividerᐳSingleTableChecklist<br />ᐳSingleTableDividerᐳSingleTableChecklistItem"):::bucket
    classDef bucket7 stroke:#808000
    class Bucket7,PgClassExpression36,PgClassExpression37 bucket7
    Bucket8("Bucket 8 (polymorphic)<br />SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem<br />Deps: 24<br />ᐳSingleTableChecklistᐳSingleTableTopic<br />ᐳSingleTableChecklistᐳSingleTablePost<br />ᐳSingleTableChecklistᐳSingleTableDivider<br />ᐳSingleTableChecklistᐳSingleTableChecklist<br />ᐳSingleTableChecklistᐳSingleTableChecklistItem"):::bucket
    classDef bucket8 stroke:#dda0dd
    class Bucket8,PgClassExpression42,PgClassExpression43 bucket8
    Bucket9("Bucket 9 (polymorphic)<br />SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem<br />Deps: 24<br />ᐳSingleTableChecklistItemᐳSingleTableTopic<br />ᐳSingleTableChecklistItemᐳSingleTablePost<br />ᐳSingleTableChecklistItemᐳSingleTableDivider<br />ᐳSingleTableChecklistItemᐳSingleTableChecklist<br />ᐳSingleTableChecklistItemᐳSingleTableChecklistItem"):::bucket
    classDef bucket9 stroke:#ff0000
    class Bucket9,PgClassExpression48,PgClassExpression49 bucket9
    Bucket0 --> Bucket1
    Bucket1 --> Bucket2
    Bucket2 --> Bucket3
    Bucket3 --> Bucket4
    Bucket4 --> Bucket5 & Bucket6 & Bucket7 & Bucket8 & Bucket9
    end
