(CommandList
  children: [
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/gce/gci/helper.sh))})
    (FuncDef
      name: get-node-instance-metadata
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:metadata) op:Equal rhs:{(DQ )} spids:[66])]
              spids: [64]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metadata)
                  op: PlusEqual
                  rhs: {(DQ ("kube-env=") (${ VSub_Name KUBE_TEMP) ("/node-kube-env.yaml,"))}
                  spids: [71]
                )
              ]
              spids: [71]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metadata)
                  op: PlusEqual
                  rhs: {(DQ ("user-data=") (${ VSub_Name KUBE_ROOT) ("/cluster/gce/gci/node.yaml,"))}
                  spids: [81]
                )
              ]
              spids: [81]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metadata)
                  op: PlusEqual
                  rhs: 
                    {
                      (DQ ("configure-sh=") (${ VSub_Name KUBE_ROOT) ("/cluster/gce/gci/configure.sh,"))
                    }
                  spids: [91]
                )
              ]
              spids: [91]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metadata)
                  op: PlusEqual
                  rhs: {(DQ ("cluster-name=") (${ VSub_Name KUBE_TEMP) ("/cluster-name.txt,"))}
                  spids: [101]
                )
              ]
              spids: [101]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metadata)
                  op: PlusEqual
                  rhs: {(DQ ("gci-update-strategy=") (${ VSub_Name KUBE_TEMP) ("/gci-update.txt,"))}
                  spids: [111]
                )
              ]
              spids: [111]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metadata)
                  op: PlusEqual
                  rhs: 
                    {
                      (DQ ("gci-ensure-gke-docker=") (${ VSub_Name KUBE_TEMP) 
                        ("/gci-ensure-gke-docker.txt,")
                      )
                    }
                  spids: [121]
                )
              ]
              spids: [121]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metadata)
                  op: PlusEqual
                  rhs: 
                    {(DQ ("gci-docker-version=") (${ VSub_Name KUBE_TEMP) (/gci-docker-version.txt))}
                  spids: [131]
                )
              ]
              spids: [131]
            )
            (C {(echo)} {(DQ (${ VSub_Name metadata))})
          ]
          spids: [61]
        )
      spids: [57 60]
    )
    (FuncDef
      name: create-node-instance-template
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:template_name)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [164]
                )
              ]
              spids: [162]
            )
            (C {(ensure-gci-metadata-files)})
            (C {(create-node-template)} {(DQ ($ VSub_Name "$template_name"))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name scope_flags>
                    bracket_op: (WholeArray op_id:Arith_Star)
                    spids: [180 185]
                  )
                )
              } 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(get-node-instance-metadata)})])
                    left_token: <Left_CommandSub "$(">
                    spids: [189 191]
                  )
                )
              }
            )
          ]
          spids: [159]
        )
      spids: [155 158]
    )
  ]
)