(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-e)})
    (command.ShFunction
      name: error
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(echo)} {(DQ ($ Id.VSub_At '$@'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:31)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:35)
              arg_word: {(1)}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:unbound)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:43)
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(dirname)} 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:46)
                            command_list: 
                              (command.CommandList
                                children: [(C {(realpath)} {($ Id.VSub_Number '$0')})]
                              )
                          )
                        }
                      )
                    ]
                  )
              )
            }
          spids: [42]
        )
      ]
    )
    (C {(cd)} {($ Id.VSub_DollarName '$unbound')})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ldnssrc)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:59)
                command_list: 
                  (command.CommandList
                    children: [(C {(realpath)} {($ Id.VSub_DollarName '$unbound') (/../ldns)})]
                  )
              )
            }
          spids: [58]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(Id.Lit_LBracket '[')} {(-f)} {($ Id.VSub_DollarName '$ldnssrc') (/ldns/ldns.h)} 
          {(Id.Lit_RBracket ']')}
        )
        (C {(error)} {(DQ ("can't find LDNS sources"))})
      ]
    )
    (C {(export)} {(Id.Lit_VarLike 'CFLAGS=') (DQ (-I) ($ Id.VSub_DollarName '$ldnssrc'))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ldnsbld)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:93)
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(realpath)} {($ Id.VSub_DollarName '$unbound') (/../../lib/libldns)})
                    ]
                  )
              )
            }
          spids: [92]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(Id.Lit_LBracket '[')} {(-f)} {($ Id.VSub_DollarName '$ldnsbld') (/Makefile)} 
          {(Id.Lit_RBracket ']')}
        )
        (C {(error)} {(DQ ("can't find LDNS build directory"))})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ldnsobj)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:119)
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(realpath)} 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:122)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(make)} {(-C) ($ Id.VSub_DollarName '$ldnsbld')} {(-V.OBJDIR)})
                                ]
                              )
                          )
                        }
                      )
                    ]
                  )
              )
            }
          spids: [118]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(Id.Lit_LBracket '[')} {(-f)} {($ Id.VSub_DollarName '$ldnsobj') (/libprivateldns.a)} 
          {(Id.Lit_RBracket ']')}
        )
        (C {(error)} {(DQ ("can't find LDNS object directory"))})
      ]
    )
    (C {(export)} {(Id.Lit_VarLike 'LDFLAGS=') (DQ (-L) ($ Id.VSub_DollarName '$ldnsobj'))})
    (C {(export)} 
      {(Id.Lit_VarLike 'CC=') 
        (command_sub
          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:161)
          command_list: 
            (command.CommandList
              children: [
                (command.Pipeline
                  children: [
                    (C {(echo)} {(DQ ('.include <bsd.lib.mk>'))})
                    (C {(make)} {(-f)} {(/dev/stdin)} {(-VCC)})
                  ]
                  negated: F
                )
              ]
            )
        )
      }
    )
    (C {(export)} 
      {(Id.Lit_VarLike 'CPP=') 
        (command_sub
          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:182)
          command_list: 
            (command.CommandList
              children: [
                (command.Pipeline
                  children: [
                    (C {(echo)} {(DQ ('.include <bsd.lib.mk>'))})
                    (C {(make)} {(-f)} {(/dev/stdin)} {(-VCPP)})
                  ]
                  negated: F
                )
              ]
            )
        )
      }
    )
    (C {(autoconf)})
    (C {(autoheader)})
    (C {(./configure)} {(--prefix) (Id.Lit_Equals '=')} {(--exec-prefix) (Id.Lit_Equals '=') (/usr)} 
      {(--with-conf-file) (Id.Lit_Equals '=') (/var/unbound/unbound.conf)} {(--with-run-dir) (Id.Lit_Equals '=') (/var/unbound)} {(--with-username) (Id.Lit_Equals '=') (unbound)}
    )
    (C {(sed)} {(-n)} {(-i.orig)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/HAVE_SBRK/!p' span_id:247))} 
      {(config.status)}
    )
    (C {(./config.status)} {(config.h)})
  ]
)