(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 (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) ("Usage:") 
                  (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) ($ VSub_Number "$0") (" <from-image-name> <from-project-name> <to-project-name> <to-image-name>") 
                  (EscapedLiteralPart token:<Lit_EscapedChar "\\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: [-1 103]
        )
      ]
      spids: [-1 113]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FROM_IMAGE)
          op: Equal
          rhs: {($ VSub_Number "$1")}
          spids: [116]
        )
      ]
      spids: [116]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FROM_PROJECT)
          op: Equal
          rhs: {($ VSub_Number "$2")}
          spids: [119]
        )
      ]
      spids: [119]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TO_PROJECT)
          op: Equal
          rhs: {($ VSub_Number "$3")}
          spids: [122]
        )
      ]
      spids: [122]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TO_IMAGE)
          op: Equal
          rhs: {($ VSub_Number "$4")}
          spids: [125]
        )
      ]
      spids: [125]
    )
    (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: [198 200]
          )
        )
      }
    )
    (C {(gcloud)} {(-q)} {(compute)} {(--project)} {($ VSub_Name "$TO_PROJECT")} {(disks)} {(delete)} 
      {($ VSub_Name "$TO_IMAGE")}
    )
  ]
)