(CommandList
  children: [
    (C {(set)} {(-euo)} {(pipefail)})
    (FuncDef
      name: error
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(-en)} {(SQ <'\\e[0;31m'>)}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[56])]
                    )
                    (Pipeline
                      children: [
                        (C {(echo)} {(DQ ($ VSub_At '$@'))})
                        (Subshell
                          child: (AndOr ops:[Op_DPipe] children:[(C {(fold)} {(-s)}) (C {(cat)})])
                          redirects: [
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 16777215
                              arg_word: {(2)}
                              spids: [78]
                            )
                          ]
                          spids: [68 76]
                        )
                      ]
                      negated: F
                    )
                    (SimpleCommand
                      words: [{(echo)} {(-en)} {(SQ <'\\e[0m'>)}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[90])]
                    )
                  ]
                  spids: [16777215 45]
                )
              ]
              spids: [16777215 94]
            )
          ]
          spids: [28]
        )
      spids: [24 27]
    )
    (FuncDef
      name: fail
      body: 
        (BraceGroup
          children: [
            (C {(error)} {(DQ ($ VSub_At '$@'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [103]
        )
      spids: [99 102]
    )
    (ForEach
      iter_name: dep
      iter_words: [{(vagrant)} {(pip)}]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (SimpleCommand
                  words: [{(which)} {($ VSub_Name '$dep')}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/null)}
                      spids: [142]
                    )
                  ]
                )
                (C {(fail)} {(DQ ('Please install ') ($ VSub_Name '$dep') ('(1).'))})
              ]
            )
          ]
          spids: [135 156]
        )
      spids: [128 133]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-f)} {(/etc/debian_version)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (ForEach
              iter_name: package
              iter_words: [{(zlib1g-dev)} {(ruby-dev)} {(libvirt-dev)} {(qemu-utils)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(-e)} 
                                      {(/usr/share/doc/) (${ VSub_Name package)} {(Lit_Other ']')}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('Seems you should run: sudo apt-get install -y ') 
                                  (${ VSub_Name package)
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Exit exit>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 215]
                        )
                      ]
                      spids: [16777215 233]
                    )
                  ]
                  spids: [195 236]
                )
              spids: [185 193]
            )
          ]
          spids: [16777215 177]
        )
      ]
      spids: [16777215 238]
    )
    (ForEach
      iter_name: vgplugin
      iter_words: [{(vagrant-mutate)} {(vagrant-libvirt)}]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Subshell
                  child: 
                    (Pipeline
                      children: [
                        (C {(vagrant)} {(plugin)} {(list)})
                        (C {(grep)} {(-q)} {(DQ ($ VSub_Name '$vgplugin'))})
                      ]
                      negated: F
                    )
                  spids: [269 285]
                )
                (C {(vagrant)} {(plugin)} {(install)} {(DQ ($ VSub_Name '$vgplugin'))})
              ]
            )
          ]
          spids: [266 299]
        )
      spids: [260 264]
    )
    (C {(cd)} 
      {
        (CommandSubPart
          command_list: (CommandList children:[(C {(mktemp)} {(-d)})])
          left_token: <Left_CommandSub '$('>
          spids: [303 307]
        )
      }
    )
    (C {(git)} {(clone)} {(https) (Lit_Other ':') (//github.com/sciurus/vagrant-mutate)})
    (C {(cd)} {(vagrant-mutate)})
    (C {(rake)} {(build)})
    (C {(vagrant)} {(plugin)} {(install)} {(pkg/vagrant-mutate-1.2.0.gem)})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [(C {(vagrant)} {(box)} {(list)}) (C {(grep)} {(-q)} {(thoughtbot_jessie)})]
              negated: F
            )
          spids: [348 362]
        )
        (C {(vagrant)} {(box)} {(add)} {(thoughtbot_jessie)} 
          {(https) (Lit_Other ':') 
            (
//vagrantcloud.com/thoughtbot/boxes/debian-jessie-64/versions/0.1.0/providers/virtualbox.box
            )
          }
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [
                (C {(vagrant)} {(box)} {(list)})
                (C {(grep)} {(-q)} {(SQ <'thoughtbot_jessie.*libvirt'>)})
              ]
              negated: F
            )
          spids: [378 394]
        )
        (C {(vagrant)} {(mutate)} {(thoughtbot_jessie)} {(libvirt)})
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [(C {(vagrant)} {(box)} {(list)}) (C {(grep)} {(-q)} {(SQ <trusty64>)})]
              negated: F
            )
          spids: [410 426]
        )
        (C {(vagrant)} {(box)} {(add)} {(trusty64)} 
          {(https) (Lit_Other ':') 
            (
//cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
            )
          }
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [
                (C {(vagrant)} {(box)} {(list)})
                (C {(grep)} {(-q)} {(SQ <'trusty64.*libvirt'>)})
              ]
              negated: F
            )
          spids: [442 458]
        )
        (C {(vagrant)} {(mutate)} {(trusty64)} {(libvirt)})
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [(C {(vagrant)} {(box)} {(list)}) (C {(grep)} {(-q)} {(SQ <debian-7.8-32-nocm>)})]
              negated: F
            )
          spids: [474 490]
        )
        (C {(vagrant)} {(box)} {(add)} {(debian-7.8-32-nocm)} 
          {(https) (Lit_Other ':') 
            (
//vagrantcloud.com/puppetlabs/boxes/debian-7.8-32-nocm/versions/1.0.2/providers/virtualbox.box
            )
          }
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [
                (C {(vagrant)} {(box)} {(list)})
                (C {(grep)} {(-q)} {(SQ <'debian-7.8-32-nocm.*libvirt'>)})
              ]
              negated: F
            )
          spids: [506 522]
        )
        (C {(vagrant)} {(mutate)} {(debian-7.8-32-nocm)} {(libvirt)})
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [(C {(vagrant)} {(box)} {(list)}) (C {(grep)} {(-q)} {(SQ <precise64>)})]
              negated: F
            )
          spids: [538 554]
        )
        (C {(vagrant)} {(box)} {(add)} {(precise64)} 
          {(https) (Lit_Other ':') 
            (//vagrantcloud.com/hashicorp/boxes/precise64/versions/1.1.0/providers/virtualbox.box)
          }
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [
                (C {(vagrant)} {(box)} {(list)})
                (C {(grep)} {(-q)} {(SQ <'precise64.*libvirt'>)})
              ]
              negated: F
            )
          spids: [570 586]
        )
        (C {(vagrant)} {(mutate)} {(precise64)} {(libvirt)})
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [
                (C {(vagrant)} {(box)} {(list)})
                (C {(grep)} {(-q)} {(SQ <centos7_convertible>)})
              ]
              negated: F
            )
          spids: [602 618]
        )
        (C {(vagrant)} {(box)} {(add)} {(centos7_convertible)} 
          {(http) (Lit_Other ':') 
            (
//cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1609_01.VirtualBox.box
            )
          }
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (Pipeline
              children: [
                (C {(vagrant)} {(box)} {(list)})
                (C {(grep)} {(-q)} {(SQ <'centos7_convertible.*libvirt'>)})
              ]
              negated: F
            )
          spids: [634 650]
        )
        (C {(vagrant)} {(mutate)} {(centos7_convertible)} {(libvirt)} {(--input-provider)} {(virtualbox)})
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                  {(TildeSubPart prefix:'') (/.local/bin/stodgy-tester)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(pip)} {(install)} {(--user)} {(--upgrade)} 
              {(git) (Lit_Other '+') (https) (Lit_Other ':') 
                (//github.com/paulproteus/stodgy-tester.git) (Lit_Pound '#') (Lit_VarLike 'egg=') (stodgy-tester)
              }
            )
          ]
          spids: [16777215 685]
        )
      ]
      spids: [16777215 705]
    )
  ]
)