%%{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

    subgraph "Buckets for queries/connections/pagination-when-inlined-backwards-nodes-only"
    Bucket0("Bucket 0 (root)<br /><br />1: <br />ᐳ: 8, 10, 12, 101, 104, 105, 13, 16, 32, 37<br />2: PgSelect[9]<br />3: PgSelectRows[18]"):::bucket
    Bucket1("Bucket 1 (listItem)<br />Deps: 13, 37, 32, 101, 8<br /><br />ROOT __Item{1}ᐸ18ᐳ[19]"):::bucket
    Bucket2("Bucket 2 (nullableBoundary)<br />Deps: 20, 13, 37, 32, 101, 8<br /><br />ROOT PgSelectSingle{1}ᐸforumsᐳ[20]"):::bucket
    Bucket3("Bucket 3 (nullableBoundary)<br />Deps: 20, 13, 37, 32, 101, 8<br /><br />ROOT Connectionᐸ25ᐳ[32]<br />1: <br />ᐳ: 24, 33, 43<br />2: PgSelect[39], PgSelect[44]<br />ᐳ: 57, 59, 60, 66, 67, 75<br />3: PgSelectRows[47], PgSelectRows[51]<br />ᐳ: 46, 49, 50, 71, 74, 77, 80, 82, 85"):::bucket
    Bucket4("Bucket 4 (listItem)<br />Deps: 13<br /><br />ROOT __Item{4}ᐸ51ᐳ[52]"):::bucket
    Bucket5("Bucket 5 (nullableBoundary)<br />Deps: 53, 13<br /><br />ROOT PgSelectSingle{4}ᐸmessagesᐳ[53]<br />1: <br />ᐳ: 86, 87<br />2: PgSelect[88]<br />3: PgSelectRows[96]<br />ᐳ: First[95], PgSelectSingle[98]"):::bucket
    Bucket6("Bucket 6 (nullableBoundary)<br />Deps: 98<br /><br />ROOT PgSelectSingle{5}ᐸusersᐳ[98]"):::bucket
    end
    Bucket0 --> Bucket1
    Bucket1 --> Bucket2
    Bucket2 --> Bucket3
    Bucket3 --> Bucket4
    Bucket4 --> Bucket5
    Bucket5 --> Bucket6

    %% plan dependencies
    PgSelect9[["PgSelect[9∈0] ➊<br />ᐸforumsᐳ"]]:::plan
    Object13{{"Object[13∈0] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Constant101{{"Constant[101∈0] ➊<br />ᐸ2ᐳ"}}:::plan
    Lambda16{{"Lambda[16∈0] ➊<br />ᐸincludeArchivedConditionᐳ"}}:::plan
    Object13 & Constant101 & Lambda16 --> PgSelect9
    Access10{{"Access[10∈0] ➊<br />ᐸ2.pgSettingsᐳ"}}:::plan
    Access12{{"Access[12∈0] ➊<br />ᐸ2.withPgClientᐳ"}}:::plan
    Access10 & Access12 --> Object13
    __Value2["__Value[2∈0] ➊<br />ᐸcontextᐳ"]:::plan
    __Value2 --> Access10
    __Value2 --> Access12
    Constant104{{"Constant[104∈0] ➊<br />ᐸ[ undefined, 'YES' ]ᐳ"}}:::plan
    Constant104 --> Lambda16
    PgSelectRows18[["PgSelectRows[18∈0] ➊"]]:::plan
    PgSelect9 --> PgSelectRows18
    Connection32{{"Connection[32∈0] ➊<br />ᐸ25ᐳ"}}:::plan
    Constant101 --> Connection32
    Lambda37{{"Lambda[37∈0] ➊<br />ᐸincludeArchivedConditionᐳ"}}:::plan
    Constant105{{"Constant[105∈0] ➊<br />ᐸ[HIDDEN]ᐳ"}}:::plan
    Constant105 --> Lambda37
    __Value4["__Value[4∈0] ➊<br />ᐸrootValueᐳ"]:::plan
    __Item19[/"__Item[19∈1]<br />ᐸ18ᐳ"\]:::itemplan
    PgSelectRows18 ==> __Item19
    PgSelectSingle20{{"PgSelectSingle[20∈1]<br />ᐸforumsᐳ"}}:::plan
    __Item19 --> PgSelectSingle20
    PgClassExpression21{{"PgClassExpression[21∈2]<br />ᐸ__forums__.”name”ᐳ"}}:::plan
    PgSelectSingle20 --> PgClassExpression21
    PgSelect39[["PgSelect[39∈3]<br />ᐸmessages+1ᐳ"]]:::plan
    PgClassExpression24{{"PgClassExpression[24∈3]<br />ᐸ__forums__.”id”ᐳ"}}:::plan
    PgClassExpression33{{"PgClassExpression[33∈3]<br />ᐸ__forums__...chived_at”ᐳ"}}:::plan
    Object13 & PgClassExpression24 & PgClassExpression33 & Lambda37 & Connection32 & Constant101 --> PgSelect39
    PgSelect44[["PgSelect[44∈3]<br />ᐸmessages(aggregate)ᐳ"]]:::plan
    Object13 & PgClassExpression24 & PgClassExpression33 & Lambda37 & Connection32 --> PgSelect44
    Object66{{"Object[66∈3]<br />ᐸ{first,last,offset,hasMore}ᐳ"}}:::plan
    Access57{{"Access[57∈3]<br />ᐸ39.hasMoreᐳ"}}:::plan
    Constant101 & Access57 --> Object66
    Object59{{"Object[59∈3]<br />ᐸ{first,last,hasMore}ᐳ"}}:::plan
    Constant101 & Access57 --> Object59
    PgCursor77{{"PgCursor[77∈3]"}}:::plan
    PgSelectSingle74{{"PgSelectSingle[74∈3]<br />ᐸmessagesᐳ"}}:::plan
    Access75{{"Access[75∈3]<br />ᐸ39.cursorDetailsᐳ"}}:::plan
    PgSelectSingle74 & Access75 --> PgCursor77
    PgCursor85{{"PgCursor[85∈3]"}}:::plan
    PgSelectSingle82{{"PgSelectSingle[82∈3]<br />ᐸmessagesᐳ"}}:::plan
    PgSelectSingle82 & Access75 --> PgCursor85
    PgSelectSingle20 --> PgClassExpression24
    PgSelectSingle20 --> PgClassExpression33
    PgPageInfo43{{"PgPageInfo[43∈3] ➊"}}:::plan
    Connection32 --> PgPageInfo43
    First46{{"First[46∈3]"}}:::plan
    PgSelectRows47[["PgSelectRows[47∈3]"]]:::plan
    PgSelectRows47 --> First46
    PgSelect44 --> PgSelectRows47
    PgSelectSingle49{{"PgSelectSingle[49∈3]<br />ᐸmessagesᐳ"}}:::plan
    First46 --> PgSelectSingle49
    PgClassExpression50{{"PgClassExpression[50∈3]<br />ᐸcount(*)ᐳ"}}:::plan
    PgSelectSingle49 --> PgClassExpression50
    PgSelectRows51[["PgSelectRows[51∈3]"]]:::plan
    PgSelect39 --> PgSelectRows51
    PgSelect39 --> Access57
    Lambda60{{"Lambda[60∈3]<br />ᐸhasNextPageCbᐳ"}}:::plan
    Object59 --> Lambda60
    Lambda67{{"Lambda[67∈3]<br />ᐸhasPreviousPageCbᐳ"}}:::plan
    Object66 --> Lambda67
    First71{{"First[71∈3]"}}:::plan
    PgSelectRows51 --> First71
    First71 --> PgSelectSingle74
    PgSelect39 --> Access75
    Last80{{"Last[80∈3]"}}:::plan
    PgSelectRows51 --> Last80
    Last80 --> PgSelectSingle82
    __Item52[/"__Item[52∈4]<br />ᐸ51ᐳ"\]:::itemplan
    PgSelectRows51 ==> __Item52
    PgSelectSingle53{{"PgSelectSingle[53∈4]<br />ᐸmessagesᐳ"}}:::plan
    __Item52 --> PgSelectSingle53
    PgSelect88[["PgSelect[88∈5]<br />ᐸusersᐳ"]]:::plan
    PgClassExpression87{{"PgClassExpression[87∈5]<br />ᐸ__messages...author_id”ᐳ"}}:::plan
    Object13 & PgClassExpression87 --> PgSelect88
    PgClassExpression86{{"PgClassExpression[86∈5]<br />ᐸ__messages__.”body”ᐳ"}}:::plan
    PgSelectSingle53 --> PgClassExpression86
    PgSelectSingle53 --> PgClassExpression87
    First95{{"First[95∈5]"}}:::plan
    PgSelectRows96[["PgSelectRows[96∈5]"]]:::plan
    PgSelectRows96 --> First95
    PgSelect88 --> PgSelectRows96
    PgSelectSingle98{{"PgSelectSingle[98∈5]<br />ᐸusersᐳ"}}:::plan
    First95 --> PgSelectSingle98
    PgClassExpression99{{"PgClassExpression[99∈6]<br />ᐸ__users__.”username”ᐳ"}}:::plan
    PgSelectSingle98 --> PgClassExpression99
    PgClassExpression100{{"PgClassExpression[100∈6]<br />ᐸ__users__....vatar_url”ᐳ"}}:::plan
    PgSelectSingle98 --> PgClassExpression100

    %% define steps
    classDef bucket0 stroke:#696969
    class Bucket0,__Value2,__Value4,PgSelect9,Access10,Access12,Object13,Lambda16,PgSelectRows18,Connection32,Lambda37,Constant101,Constant104,Constant105 bucket0
    classDef bucket1 stroke:#00bfff
    class Bucket1,__Item19,PgSelectSingle20 bucket1
    classDef bucket2 stroke:#7f007f
    class Bucket2,PgClassExpression21 bucket2
    classDef bucket3 stroke:#ffa500
    class Bucket3,PgClassExpression24,PgClassExpression33,PgSelect39,PgPageInfo43,PgSelect44,First46,PgSelectRows47,PgSelectSingle49,PgClassExpression50,PgSelectRows51,Access57,Object59,Lambda60,Object66,Lambda67,First71,PgSelectSingle74,Access75,PgCursor77,Last80,PgSelectSingle82,PgCursor85 bucket3
    classDef bucket4 stroke:#0000ff
    class Bucket4,__Item52,PgSelectSingle53 bucket4
    classDef bucket5 stroke:#7fff00
    class Bucket5,PgClassExpression86,PgClassExpression87,PgSelect88,First95,PgSelectRows96,PgSelectSingle98 bucket5
    classDef bucket6 stroke:#ff1493
    class Bucket6,PgClassExpression99,PgClassExpression100 bucket6

