(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:saved)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$PWD'))}
          spids: [7]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} {(DQ )} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dest)
                  op: assign_op.Equal
                  rhs: {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) <'/.micropython/lib/'>}
                  spids: [32]
                )
              ]
            )
          ]
          spids: [13 29]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:dest)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_Number '$1'))}
              spids: [39]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$TMPDIR'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<cd>} {<'/tmp'>})]
          spids: [47 60]
        )
      ]
      else_action: [(C {<cd>} {($ Id.VSub_DollarName '$TMPDIR')})]
    )
    (C {<rm>} {<-rf>} {<micropython-upip-> <Id.Lit_Star '*'>})
    (C {<wget>} {<-nd>} {<-r>} {<-l1>} 
      {<https> <Id.Lit_Colon ':'> <'//pypi.python.org/pypi/micropython-upip/'>} {<--accept-regex>} {(DQ <'.*pypi.python.org/packages/source/.*.gz'>)} 
      {<--reject> <Id.Lit_Equals '='> <html>}
    )
    (C {<tar>} {<xfz>} {<micropython-upip-> <Id.Lit_Star '*'> <.tar.gz>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tmpd)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$PWD'))}
          spids: [118]
        )
      ]
    )
    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$saved'))})
    (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$dest'))})
    (C {<cp>} 
      {(DQ ($ Id.VSub_DollarName '$tmpd')) <'/micropython-upip-'> <Id.Lit_Star '*'> <'/upip'> 
        <Id.Lit_Star '*'> <.py>
      } {(DQ ($ Id.VSub_DollarName '$dest'))}
    )
    (C {<echo>} {(DQ <'upip is installed. To use:'>)})
    (C {<echo>} {(DQ <'micropython -m upip --help'>)})
  ]
)