graph TD
    classDef path fill:#eee,stroke:#000,color:#000
    classDef plan fill:#fff,stroke-width:3px,color:#000
    classDef itemplan fill:#fff,stroke-width:6px,color:#000
    classDef sideeffectplan fill:#f00,stroke-width:6px,color:#000
    classDef bucket fill:#f6f6f6,color:#000,stroke-width:6px,text-align:left


    %% define steps
    __Value3["__Value[3∈0]<br />ᐸcontextᐳ"]:::plan
    __Value5["__Value[5∈0]<br />ᐸrootValueᐳ"]:::plan
    Access28["Access[28∈0]<br />ᐸ3.pgSettingsᐳ"]:::plan
    Access29["Access[29∈0]<br />ᐸ3.withPgClientᐳ"]:::plan
    Object30["Object[30∈0]<br />ᐸ{pgSettings,withPgClient}ᐳ"]:::plan
    Connection31["Connection[31∈0]<br />ᐸ27ᐳ"]:::plan
    PgSelect32[["PgSelect[32∈0]<br />ᐸpostᐳ"]]:::plan
    __Item33>"__Item[33∈1]<br />ᐸ32ᐳ"]:::itemplan
    PgSelectSingle34["PgSelectSingle[34∈1]<br />ᐸpostᐳ"]:::plan
    PgClassExpression36["PgClassExpression[36∈1]<br />ᐸ__post__.”id”ᐳ"]:::plan
    List37["List[37∈1]<br />ᐸ36ᐳ"]:::plan
    PgCursor35["PgCursor[35∈1]"]:::plan
    PgClassExpression39["PgClassExpression[39∈1]<br />ᐸ__post__.”headline”ᐳ"]:::plan
    PgClassExpression43["PgClassExpression[43∈1]<br />ᐸ”a”.”post_...(__post__)ᐳ"]:::plan
    Map134["Map[134∈1]<br />ᐸ34:{”0”:0,”1”:1,”2”:2,”3”:3,”4”:4,”5”:5,”6”:6,”7”:7,”8”:8,”9”:9,”10”:10,”11”:11,”12”:12}ᐳ"]:::plan
    List135["List[135∈1]<br />ᐸ134ᐳ"]:::plan
    First49["First[49∈1]"]:::plan
    PgSelectSingle50["PgSelectSingle[50∈1]<br />ᐸpersonᐳ"]:::plan
    PgClassExpression51["PgClassExpression[51∈1]<br />ᐸ__person__.”id”ᐳ"]:::plan
    PgClassExpression52["PgClassExpression[52∈1]<br />ᐸ__person__...full_name”ᐳ"]:::plan
    PgClassExpression54["PgClassExpression[54∈1]<br />ᐸ”c”.”perso..._person__)ᐳ"]:::plan
    Map132["Map[132∈1]<br />ᐸ50:{”0”:2,”1”:3,”2”:4,”3”:5,”4”:6,”5”:7,”6”:8}ᐳ"]:::plan
    List133["List[133∈1]<br />ᐸ132ᐳ"]:::plan
    First60["First[60∈1]"]:::plan
    PgSelectSingle61["PgSelectSingle[61∈1]<br />ᐸperson_first_postᐳ"]:::plan
    PgClassExpression62["PgClassExpression[62∈1]<br />ᐸ__person_f...ost__.”id”ᐳ"]:::plan
    PgClassExpression63["PgClassExpression[63∈1]<br />ᐸ__person_f...”headline”ᐳ"]:::plan
    PgClassExpression67["PgClassExpression[67∈1]<br />ᐸ”a”.”post_...st_post__)ᐳ"]:::plan
    Map130["Map[130∈1]<br />ᐸ61:{”0”:0,”1”:1,”2”:2}ᐳ"]:::plan
    List131["List[131∈1]<br />ᐸ130ᐳ"]:::plan
    First73["First[73∈1]"]:::plan
    PgSelectSingle74["PgSelectSingle[74∈1]<br />ᐸpersonᐳ"]:::plan
    PgClassExpression75["PgClassExpression[75∈1]<br />ᐸ__person__.”id”ᐳ"]:::plan
    PgClassExpression76["PgClassExpression[76∈1]<br />ᐸ__person__...full_name”ᐳ"]:::plan
    PgClassExpression78["PgClassExpression[78∈1]<br />ᐸ”c”.”perso..._person__)ᐳ"]:::plan
    Connection106["Connection[106∈0]<br />ᐸ102ᐳ"]:::plan
    Access129["Access[129∈1]<br />ᐸ49.1ᐳ"]:::plan
    __ListTransform108[["__ListTransform[108∈1]<br />ᐸeach:107ᐳ"]]:::plan
    __Item111>"__Item[111∈3]<br />ᐸ108ᐳ"]:::itemplan
    PgSelectSingle112["PgSelectSingle[112∈3]<br />ᐸperson_friendsᐳ"]:::plan
    PgClassExpression113["PgClassExpression[113∈3]<br />ᐸ__person_friends__.”id”ᐳ"]:::plan
    PgClassExpression114["PgClassExpression[114∈3]<br />ᐸ__person_f...full_name”ᐳ"]:::plan
    PgClassExpression116["PgClassExpression[116∈3]<br />ᐸ”c”.”perso...friends__)ᐳ"]:::plan
    Access128["Access[128∈1]<br />ᐸ49.0ᐳ"]:::plan
    First118["First[118∈1]"]:::plan
    PgSelectSingle119["PgSelectSingle[119∈1]<br />ᐸperson_friendsᐳ"]:::plan
    PgClassExpression120["PgClassExpression[120∈1]<br />ᐸcount(*)ᐳ"]:::plan
    PgPageInfo121["PgPageInfo[121∈0]"]:::plan
    First123["First[123∈1]"]:::plan
    PgSelectSingle124["PgSelectSingle[124∈1]<br />ᐸperson_friendsᐳ"]:::plan
    PgClassExpression126["PgClassExpression[126∈1]<br />ᐸrow_number...tion by 1)ᐳ"]:::plan
    List127["List[127∈1]<br />ᐸ126ᐳ"]:::plan
    PgCursor125["PgCursor[125∈1]"]:::plan

    %% plan dependencies
    __Value3 --> Access28
    __Value3 --> Access29
    Access28 & Access29 --> Object30
    Object30 & Connection31 --> PgSelect32
    PgSelect32 ==> __Item33
    __Item33 --> PgSelectSingle34
    PgSelectSingle34 --> PgClassExpression36
    PgClassExpression36 --> List37
    List37 --> PgCursor35
    PgSelectSingle34 --> PgClassExpression39
    PgSelectSingle34 --> PgClassExpression43
    PgSelectSingle34 --> Map134
    Map134 --> List135
    List135 --> First49
    First49 --> PgSelectSingle50
    PgSelectSingle50 --> PgClassExpression51
    PgSelectSingle50 --> PgClassExpression52
    PgSelectSingle50 --> PgClassExpression54
    PgSelectSingle50 --> Map132
    Map132 --> List133
    List133 --> First60
    First60 --> PgSelectSingle61
    PgSelectSingle61 --> PgClassExpression62
    PgSelectSingle61 --> PgClassExpression63
    PgSelectSingle61 --> PgClassExpression67
    PgSelectSingle61 --> Map130
    Map130 --> List131
    List131 --> First73
    First73 --> PgSelectSingle74
    PgSelectSingle74 --> PgClassExpression75
    PgSelectSingle74 --> PgClassExpression76
    PgSelectSingle74 --> PgClassExpression78
    First49 --> Access129
    Access129 --> __ListTransform108
    __ListTransform108 ==> __Item111
    __Item111 --> PgSelectSingle112
    PgSelectSingle112 --> PgClassExpression113
    PgSelectSingle112 --> PgClassExpression114
    PgSelectSingle112 --> PgClassExpression116
    First49 --> Access128
    Access128 --> First118
    First118 --> PgSelectSingle119
    PgSelectSingle119 --> PgClassExpression120
    Access129 --> First123
    First123 --> PgSelectSingle124
    PgSelectSingle124 --> PgClassExpression126
    PgClassExpression126 --> List127
    List127 --> PgCursor125

    %% plan-to-path relationships

    subgraph "Buckets for queries/v4/posts"
    Bucket0("Bucket 0<br />(root)"):::bucket
    classDef bucket0 stroke:#696969
    class Bucket0,__Value3,__Value5,Access28,Access29,Object30,Connection31,PgSelect32,Connection106,PgPageInfo121 bucket0
    Bucket1("Bucket 1<br />(listItem)<br />Deps: 106, 121, 32<br /><br />ROOT __Item{1}ᐸ32ᐳ[33]"):::bucket
    classDef bucket1 stroke:#00bfff
    class Bucket1,__Item33,PgSelectSingle34,PgCursor35,PgClassExpression36,List37,PgClassExpression39,PgClassExpression43,First49,PgSelectSingle50,PgClassExpression51,PgClassExpression52,PgClassExpression54,First60,PgSelectSingle61,PgClassExpression62,PgClassExpression63,PgClassExpression67,First73,PgSelectSingle74,PgClassExpression75,PgClassExpression76,PgClassExpression78,__ListTransform108,First118,PgSelectSingle119,PgClassExpression120,First123,PgSelectSingle124,PgCursor125,PgClassExpression126,List127,Access128,Access129,Map130,List131,Map132,List133,Map134,List135 bucket1
    Bucket2("Bucket 2<br />(subroutine)<br />ROOT null"):::bucket
    classDef bucket2 stroke:#7f007f
    class Bucket2 bucket2
    Bucket3("Bucket 3<br />(listItem)<br />Deps: 108<br /><br />ROOT __Item{3}ᐸ108ᐳ[111]"):::bucket
    classDef bucket3 stroke:#ffa500
    class Bucket3,__Item111,PgSelectSingle112,PgClassExpression113,PgClassExpression114,PgClassExpression116 bucket3
    Bucket0 --> Bucket1
    Bucket1 --> Bucket2 & Bucket3
    end
