(command.CommandList
  children: [
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<.>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name srcdir>
                    suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{<.>})
                  ) <'/tests/init.sh'>
                )
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<path_prepend_>} {<'./src'>})
      ]
    )
    (C {<print_ver_>} {<df>})
    (C {<require_gcc_shared_>})
    (command.AndOr ops:[Id.Op_DPipe] children:[(C {<df>}) (C {<skip_>} {(DQ <'df fails'>)})])
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<k.c>})
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 116
                  stdin_parts: [
                    <'#include <stdio.h>\n'>
                    <'#include <errno.h>\n'>
                    <'#include <mntent.h>\n'>
                    <'\n'>
                    <'struct mntent *getmntent (FILE *fp)\n'>
                    <'{\n'>
                    <'  /* Prove that LD_PRELOAD works. */\n'>
                    <'  static int done = 0;\n'>
                    <'  if (!done)\n'>
                    <'    {\n'>
                    <'      fclose (fopen ("x", "w"));\n'>
                    <'      ++done;\n'>
                    <'    }\n'>
                    <'  /* Now simulate the failure. */\n'>
                    <'  errno = ENOENT;\n'>
                    <'  return NULL;\n'>
                    <'}\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (C {<framework_failure_>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {($ Id.VSub_DollarName '$CC')} {<-shared>} {<-fPIC>} {<-ldl>} {<-O2>} {<k.c>} {<-o>} {<k.so>})
        (C {<framework_failure_>} {(SQ <'failed to build shared library'>)})
      ]
    )
    (command.Simple
      words: [{<df>}]
      more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[151])]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {<x>})
        (C {<skip_>} {(DQ <'internal test failure: maybe LD_PRELOAD doesn\'t work?'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<df>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[174])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [185]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<df>} {<-i>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[188])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [201]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<df>} {<-T>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[204])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [217]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<df>} {<-Ti>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[220])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [233]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<df>} {<--total>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[236])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [249]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[256])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [263]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-i>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[266])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [275]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-T>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[278])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [287]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-Ti>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[290])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [299]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<--total>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[302])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [311]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-a>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[315])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [324]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-a>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[327])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [340]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-l>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[344])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [353]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-l>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[356])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [369]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-t>} {<hello>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[373])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [384]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-t>} {<hello>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[387])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [402]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-x>} {<hello>}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[406])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [417]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<df>} {<-x>} {<hello>} {(SQ <.>)}]
          more_env: [(env_pair name:LD_PRELOAD val:{<'./k.so'>} spids:[420])]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [435]
            )
          ]
        )
      ]
    )
    (C {<Exit>} {($ Id.VSub_DollarName '$fail')})
  ]
)