(CommandList
  children: [
    (C {(set)} {(-e)})
    (FuncDef
      name: print_usage
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('This script helps copy a GCE image from a source to a target project'))})
            (C {(echo)} {(-e)} 
              {
                (DQ (Lit_Other '\\') ('nUsage:') (Lit_Other '\\') (n) ($ VSub_Number '$0') 
                  (' <from-image-name> <from-project-name> <to-project-name> <to-image-name>') (Lit_Other '\\') (n)
                )
              }
            )
          ]
          spids: [64]
        )
      spids: [60 63]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(4)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(print_usage)}) (C {(exit)} {(1)})]
          spids: [16777215 105]
        )
      ]
      spids: [16777215 115]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FROM_IMAGE)
          op: Equal
          rhs: {($ VSub_Number '$1')}
          spids: [118]
        )
      ]
      spids: [118]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FROM_PROJECT)
          op: Equal
          rhs: {($ VSub_Number '$2')}
          spids: [121]
        )
      ]
      spids: [121]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TO_PROJECT)
          op: Equal
          rhs: {($ VSub_Number '$3')}
          spids: [124]
        )
      ]
      spids: [124]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TO_IMAGE)
          op: Equal
          rhs: {($ VSub_Number '$4')}
          spids: [127]
        )
      ]
      spids: [127]
    )
    (C {(echo)} 
      {
        (DQ ('Copying image ') ($ VSub_Name '$FROM_IMAGE') (' from project ') 
          ($ VSub_Name '$FROM_PROJECT') (' to project ') ($ VSub_Name '$TO_PROJECT') (' as image ') ($ VSub_Name '$TO_IMAGE') (...)
        )
      }
    )
    (C {(gcloud)} {(compute)} {(--project)} {($ VSub_Name '$TO_PROJECT')} {(disks)} {(create)} 
      {($ VSub_Name '$TO_IMAGE')} 
      {(--image) (Lit_Other '=') (https) (Lit_Other ':') (//www.googleapis.com/compute/v1/projects/) 
        ($ VSub_Name '$FROM_PROJECT') (/global/images/) ($ VSub_Name '$FROM_IMAGE')
      }
    )
    (C {(gcloud)} {(compute)} {(--project)} {($ VSub_Name '$TO_PROJECT')} {(images)} {(create)} 
      {($ VSub_Name '$TO_IMAGE')} {(--source-disk) (Lit_Other '=') ($ VSub_Name '$TO_IMAGE')} 
      {(--description) (Lit_Other '=') 
        (DQ ('Cloned from projects/') ($ VSub_Number '$2') (/global/images/) ($ VSub_Number '$1') 
          (' by ') ($ VSub_Name '$USER') (' on ') 
          (CommandSubPart
            command_list: (CommandList children:[(C {(date)})])
            left_token: <Left_CommandSub '$('>
            spids: [200 202]
          )
        )
      }
    )
    (C {(gcloud)} {(-q)} {(compute)} {(--project)} {($ VSub_Name '$TO_PROJECT')} {(disks)} {(delete)} 
      {($ VSub_Name '$TO_IMAGE')}
    )
  ]
)