(command.CommandList
  children: [
    (command.ShFunction
      name: fmtwsname
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<awk>} {<-F> <Id.Lit_Colon ':'>} 
              {(SQ <'$1 != $0 { print "/net/"$1$2 } \\\n'> <'\t\t $1 == $0 { print $0 }'>)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_proto
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_Number 1)})
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)]
                  spids: [203 214]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobEqual
                                  left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                                  right: {(DQ <teamware>)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [(C {<echo>} {($ Id.VSub_Number 1)}) (C {<fmtwsname>})]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [248]
                        )
                      ]
                      redirects: []
                    )
                    (C {<echo>} {(DQ (${ Id.VSub_Name proto) <'/root_'> (${ Id.VSub_Name MACH))})
                  ]
                  spids: [224 241]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobEqual
                                  left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                                  right: {(DQ <mercurial>)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                          spids: [293]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.LogicalAnd
                                          left: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: 
                                                {
                                                  (DQ 
                                                    (braced_var_sub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name proto>
                                                      var_name: proto
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_DPound '##'>
                                                          arg_word: 
                                                            {<'ssh:'> <Id.Lit_Slash '/'> 
                                                              <Id.Lit_Slash '/'>
                                                            }
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  )
                                                }
                                              right: {(DQ ($ Id.VSub_DollarName proto))}
                                            )
                                          right: 
                                            (bool_expr.LogicalAnd
                                              left: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: 
                                                    {
                                                      (DQ 
                                                        (braced_var_sub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name proto>
                                                          var_name: proto
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op: <Id.VOp1_DPound '##'>
                                                              arg_word: 
                                                                {<'http:'> <Id.Lit_Slash '/'> 
                                                                  <Id.Lit_Slash '/'>
                                                                }
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        )
                                                      )
                                                    }
                                                  right: {(DQ ($ Id.VSub_DollarName proto))}
                                                )
                                              right: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: 
                                                    {
                                                      (DQ 
                                                        (braced_var_sub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name proto>
                                                          var_name: proto
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op: <Id.VOp1_DPound '##'>
                                                              arg_word: 
                                                                {<'https:'> <Id.Lit_Slash '/'> 
                                                                  <Id.Lit_Slash '/'>
                                                                }
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        )
                                                      )
                                                    }
                                                  right: {(DQ ($ Id.VSub_DollarName proto))}
                                                )
                                            )
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} {(DQ (${ Id.VSub_Name proto) <'/root_'> (${ Id.VSub_Name MACH))})
                          ]
                          spids: [321 384]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [273 290]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobEqual
                                  left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                                  right: {(DQ <git>)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ (${ Id.VSub_Number 1) <'/root_'> (${ Id.VSub_Name MACH))})]
                  spids: [403 420]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: cleanup_env
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<unset>} {<setenv>} {<osbld_flag>} {<os_rev>} {<wsosdir>} {<protofile>} {<wsname>} {<ofs>} 
              {<proto>} {<pwd>} {<parent>} {<PROTO1>} {<PROTO2>} {<PROTO3>} {<tmpwsname>}
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobEqual
                          left: {(DQ ($ Id.VSub_Number 1))}
                          right: {(DQ <-e>)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'setenv='> name:setenv)
                  op: assign_op.Equal
                  rhs: {<true>}
                  spids: [536]
                )
              ]
              redirects: []
            )
            (C {<shift>})
          ]
          spids: [516 533]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'setenv='> name:setenv)
              op: assign_op.Equal
              rhs: {<false>}
              spids: [545]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHICH_SCM='> name:WHICH_SCM)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<'/bin/dirname'>} 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<whence>} {($ Id.VSub_Number 0)})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  )
                right: <Id.Eof_RParen _>
              ) <'/which_scm'>
            }
          spids: [551]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalNot
                          child: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_x
                              child: {($ Id.VSub_DollarName WHICH_SCM)}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHICH_SCM='> name:WHICH_SCM)
                  op: assign_op.Equal
                  rhs: {<which_scm>}
                  spids: [579]
                )
              ]
              redirects: []
            )
          ]
          spids: [563 576]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_lt
                          left: {($ Id.VSub_Pound '#')}
                          right: {<1>}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {<env>} {<Id.Lit_VarLike 'CODEMGR_WS='> (DQ )} 
                                      {($ Id.VSub_DollarName WHICH_SCM)}
                                    )
                                    (C {<read>} {<SCM_MODE>} {<tmpwsname>})
                                  ]
                                  negated: F
                                  stderr_indices: []
                                )
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {($ Id.VSub_DollarName SCM_MODE)}
                                      right: {<unknown>}
                                    )
                                  redirects: []
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} 
                      {
                        (DQ <'Defaulting to '> ($ Id.VSub_DollarName SCM_MODE) <' repository '> 
                          ($ Id.VSub_DollarName tmpwsname)
                        )
                      }
                    )
                  ]
                  spids: [613 646]
                )
              ]
              else_action: [
                (command.Simple
                  words: [{<echo>} {(DQ <'usage: ws [-e] [workspace_name]'>)}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: (C {($ Id.VSub_DollarName setenv)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<cleanup_env>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      spids: [672 677]
                    )
                  ]
                  else_action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          spids: [597 610]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmpwsname='> name:tmpwsname)
              op: assign_op.Equal
              rhs: {($ Id.VSub_Number 1)}
              spids: [720]
            )
          ]
          redirects: []
        )
        (C {<shift>})
      ]
      redirects: []
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WS_STACK='> name:WS_STACK)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName tmpwsname) <' '> ($ Id.VSub_DollarName WS_STACK))}
                  spids: [741]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<WS_STACK>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wsname='> name:wsname)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [(C {<echo>} {($ Id.VSub_DollarName tmpwsname)}) (C {<fmtwsname>})]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [763]
        )
      ]
      redirects: []
    )
    (C {<unset>} {<tmpwsname>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalAnd
                      left: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {(${ Id.VSub_Name CODEMGR_WSPATH)}
                        )
                      right: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_d
                                  child: {($ Id.VSub_DollarName wsname)}
                                )
                            )
                          right: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobEqual
                              left: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {<expr>} {(DQ ($ Id.VSub_DollarName wsname))} 
                                        {<Id.Lit_Colon ':'>} {(DQ <Id.Lit_BadBackslash '\\'> <'/'>)}
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              right: {(DQ <0>)}
                            )
                        )
                    )
                  redirects: []
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ofs='> name:ofs)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName IFS)}
                  spids: [849]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <': \t'>)}
                  spids: [853]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [i]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName CODEMGR_WSPATH)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_d
                                          child: {(${ Id.VSub_Name i) <'/'> (${ Id.VSub_Name wsname)}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wsname='> name:wsname)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name i) <'/'> (${ Id.VSub_Name wsname)}
                                  spids: [892]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [872 889]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName ofs)}
                  spids: [911]
                )
              ]
              redirects: []
            )
          ]
          spids: [788 846]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<expr>} {(DQ ($ Id.VSub_DollarName wsname))} {<Id.Lit_Colon ':'>} 
                                {(DQ <Id.Lit_BadBackslash '\\'> <'/'>)}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      right: {(DQ <0>)}
                    )
                  redirects: []
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pwd='> name:pwd)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<pwd>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [964]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wsname='> name:wsname)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName pwd) <'/'> ($ Id.VSub_DollarName wsname))}
                  spids: [972]
                )
              ]
              redirects: []
            )
          ]
          spids: [929 961]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalNot
                          child: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_d
                              child: {($ Id.VSub_DollarName wsname)}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName wsname) <' . . . no such directory'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {($ Id.VSub_DollarName setenv)})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<cleanup_env>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1018 1023]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
              redirects: []
            )
          ]
          spids: [991 1004]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.Pipeline
      children: [
        (command.Subshell
          child: 
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<cd>} {($ Id.VSub_DollarName wsname)})
                (C {<env>} {<Id.Lit_VarLike 'CODEMGR_WS='> (DQ )} {($ Id.VSub_DollarName WHICH_SCM)})
              ]
            )
          redirects: []
        )
        (C {<read>} {<SCM_MODE>} {<tmpwsname>})
      ]
      negated: F
      stderr_indices: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: {($ Id.VSub_QMark '?')}
                              right: {<0>}
                            )
                          right: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                              right: {<unknown>}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} 
              {
                (DQ <'Error: Unable to detect a supported SCM repository in '> 
                  ($ Id.VSub_DollarName wsname)
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {($ Id.VSub_DollarName setenv)})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<cleanup_env>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1117 1122]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
              redirects: []
            )
          ]
          spids: [1083 1106]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wsname='> name:wsname)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName tmpwsname)}
          spids: [1146]
        )
      ]
      redirects: []
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CODEMGR_WS='> name:CODEMGR_WS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName wsname)}
                  spids: [1149]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<CODEMGR_WS>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRC='> name:SRC)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName wsname) <'/usr/src'>}
                  spids: [1158]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<SRC>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TSRC='> name:TSRC)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName wsname) <'/usr/ontest'>}
                  spids: [1167]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<TSRC>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobEqual
                              left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                              right: {(DQ <teamware>)}
                            )
                          right: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_d
                              child: {(${ Id.VSub_Name wsname) <'/Codemgr_wsdata'>}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CM_DATA='> name:CM_DATA)
                  op: assign_op.Equal
                  rhs: {(DQ <Codemgr_wsdata>)}
                  spids: [1206]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wsosdir='> name:wsosdir)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName CODEMGR_WS) <'/'> ($ Id.VSub_DollarName CM_DATA) <'/sunos'>}
                  spids: [1212]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'protofile='> name:protofile)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName wsosdir) <'/protodefs'>}
                  spids: [1219]
                )
              ]
              redirects: []
            )
          ]
          spids: [1177 1203]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobEqual
                              left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                              right: {(DQ <mercurial>)}
                            )
                          right: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_d
                              child: {(${ Id.VSub_Name wsname) <'/.hg'>}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CM_DATA='> name:CM_DATA)
                  op: assign_op.Equal
                  rhs: {(DQ <.hg>)}
                  spids: [1252]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wsosdir='> name:wsosdir)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName CODEMGR_WS) <'/'> ($ Id.VSub_DollarName CM_DATA)}
                  spids: [1258]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'protofile='> name:protofile)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName wsosdir) <'/org.opensolaris.protodefs'>}
                  spids: [1264]
                )
              ]
              redirects: []
            )
          ]
          spids: [1223 1249]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobEqual
                              left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                              right: {(DQ <git>)}
                            )
                          right: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_d
                              child: {(${ Id.VSub_Name wsname) <'/.git'>}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CM_DATA='> name:CM_DATA)
                  op: assign_op.Equal
                  rhs: {(DQ <.git>)}
                  spids: [1297]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wsosdir='> name:wsosdir)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName CODEMGR_WS) <'/'> ($ Id.VSub_DollarName CM_DATA)}
                  spids: [1303]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'protofile='> name:protofile)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName wsosdir) <'/org.opensolaris.protodefs'>}
                  spids: [1309]
                )
              ]
              redirects: []
            )
          ]
          spids: [1268 1294]
        )
      ]
      else_action: [
        (command.Simple
          words: [
            {<echo>}
            {
              (DQ ($ Id.VSub_DollarName wsname) <' is not a supported workspace; type is '> 
                ($ Id.VSub_DollarName SCM_MODE)
              )
            }
          ]
          redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          more_env: []
          do_fork: T
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {($ Id.VSub_DollarName setenv)})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (C {<cleanup_env>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              spids: [1328 1333]
            )
          ]
          else_action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MACH='> name:MACH)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<uname>} {<-p>})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [1357]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalNot
                          child: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_f
                              child: {($ Id.VSub_DollarName protofile)}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_w
                                      child: 
                                        {($ Id.VSub_DollarName CODEMGR_WS) <'/'> 
                                          ($ Id.VSub_DollarName CM_DATA)
                                        }
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} 
                      {
                        (DQ <'Unable to create the proto defaults file ('> 
                          ($ Id.VSub_DollarName protofile) <').'>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wsosdir='> name:wsosdir)
                          op: assign_op.Equal
                          rhs: {<'/tmp'>}
                          spids: [1431]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'protofile='> name:protofile)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName wsosdir) <'/protodefs'>}
                          spids: [1435]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1383 1398]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_d
                                      child: {($ Id.VSub_DollarName wsosdir)}
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<mkdir>} {($ Id.VSub_DollarName wsosdir)})]
                  spids: [1444 1457]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<PROTOFILE_EoF>}
                      here_end_span_id: 1507
                      stdin_parts: [
                        <'#!/bin/sh\n'>
                        <'#\n'>
                        <'#\tSet default proto areas for this workspace\n'>
                        <'#\tNOTE: This file was initially automatically generated.\n'>
                        <'#\n'>
                        <'#\tFeel free to edit this file.  If this file is removed\n'>
                        <'#\tit will be rebuilt containing default values.\n'>
                        <'#\n'>
                        <'#\tThe variable CODEMGR_WS is available to this script.\n'>
                        <'#\n'>
                        <'#\tPROTO1 is the first proto area searched and is typically set\n'>
                        <'#\tto a proto area associated with the workspace.  The ROOT\n'>
                        <'#\tenvironment variable is set to the same as PROTO1.  If you\n'>
                        <'#\twill be doing make installs this proto area needs to be writable.\n'>
                        <'#\n'>
                        <'#\tPROTO2 and PROTO3 are set to proto areas to search before the\n'>
                        <'#\tsearch proceeds to the local machine or the proto area specified by\n'>
                        <'#\tTERMPROTO.\n'>
                        <'#\n'>
                        <'#\tTERMPROTO (if specified) is the last place searched.  If\n'>
                        <'#\tTERMPROTO is not specified the search will end at the local\n'>
                        <'#\tmachine.\n'>
                        <'#\n'>
                        <'\n'>
                        <'PROTO1='>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        )
                        <'CODEMGR_WS/proto\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName protofile)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobEqual
                                  left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                                  right: {(DQ <teamware>)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<PROTOFILE_EoF>}
                              here_end_span_id: 1567
                              stdin_parts: [
                                <'if [[ -f '>
                                <Id.Right_DoubleQuote '"'>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'CODEMGR_WS/Codemgr_wsdata/parent'>
                                <Id.Right_DoubleQuote '"'>
                                <' ]]; then\n'>
                                <'   #\n'>
                                <
'   # If this workspace has an codemgr parent then set PROTO2 to\n'
                                >
                                <'   # point to the parents proto space.\n'>
                                <'   #\n'>
                                <'   parent='>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\`'>
                                  ch: '`'
                                )
                                <'workspace parent '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <CODEMGR_WS>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\`'>
                                  ch: '`'
                                )
                                <'\n'>
                                <'   if [[ -n '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'parent ]]; then\n'>
                                <'\t   PROTO2='>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'parent/proto\n'>
                                <'   fi\n'>
                                <'fi\n'>
                              ]
                            )
                        )
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName protofile)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1511 1528]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobEqual
                                  left: {(DQ ($ Id.VSub_DollarName SCM_MODE))}
                                  right: {(DQ <mercurial>)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<PROTOFILE_EoF>}
                              here_end_span_id: 1620
                              stdin_parts: [
                                <'parent='>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\`'>
                                  ch: '`'
                                )
                                <'(cd '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'CODEMGR_WS && hg path default 2>/dev/null)'>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\`'>
                                  ch: '`'
                                )
                                <'\n'>
                                <'if [[ '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'? -eq 0 && -n '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'parent ]]; then\n'>
                                <'   [[ -n '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'(check_proto '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'parent/proto) ]] && PROTO2='>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                )
                                <'parent/proto\n'>
                                <'fi\n'>
                              ]
                            )
                        )
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName protofile)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1569 1586]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [1367 1380]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<.>} {($ Id.VSub_DollarName protofile)})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAKEFLAGS='> name:MAKEFLAGS)
                  op: assign_op.Equal
                  rhs: {<e>}
                  spids: [1636]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<MAKEFLAGS>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOT='> name:ROOT)
          op: assign_op.Equal
          rhs: {<'/proto/root_'> (${ Id.VSub_Name MACH)}
          spids: [1654]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVCPPFLAGS1='> name:ENVCPPFLAGS1)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1664]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVCPPFLAGS2='> name:ENVCPPFLAGS2)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1666]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVCPPFLAGS3='> name:ENVCPPFLAGS3)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1668]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVCPPFLAGS4='> name:ENVCPPFLAGS4)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1670]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVLDLIBS1='> name:ENVLDLIBS1)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1672]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVLDLIBS2='> name:ENVLDLIBS2)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1674]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVLDLIBS3='> name:ENVLDLIBS3)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1676]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROTO1='> name:PROTO1)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<check_proto>} {($ Id.VSub_DollarName PROTO1)})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [1679]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {(DQ ($ Id.VSub_DollarName PROTO1))}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOT='> name:ROOT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName PROTO1)}
                  spids: [1707]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVCPPFLAGS1='> name:ENVCPPFLAGS1)
                  op: assign_op.Equal
                  rhs: {<-I> ($ Id.VSub_DollarName ROOT) <'/usr/include'>}
                  spids: [1711]
                )
              ]
              redirects: []
            )
            (C {<export>} {<ENVCPPFLAGS1>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVLDLIBS1='> name:ENVLDLIBS1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <-L> ($ Id.VSub_DollarName ROOT) <'/lib -L'> ($ Id.VSub_DollarName ROOT) 
                        <'/usr/lib'>
                      )
                    }
                  spids: [1722]
                )
              ]
              redirects: []
            )
            (C {<export>} {<ENVLDLIBS1>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROTO2='> name:PROTO2)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<check_proto>} {($ Id.VSub_DollarName PROTO2)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1738]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {(DQ ($ Id.VSub_DollarName PROTO2))}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ENVCPPFLAGS2='>
                              name: ENVCPPFLAGS2
                            )
                          op: assign_op.Equal
                          rhs: {<-I> ($ Id.VSub_DollarName PROTO2) <'/usr/include'>}
                          spids: [1767]
                        )
                      ]
                      redirects: []
                    )
                    (C {<export>} {<ENVCPPFLAGS2>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVLDLIBS2='> name:ENVLDLIBS2)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <-L> ($ Id.VSub_DollarName PROTO2) <'/lib -L'> 
                                ($ Id.VSub_DollarName PROTO2) <'/usr/lib'>
                              )
                            }
                          spids: [1778]
                        )
                      ]
                      redirects: []
                    )
                    (C {<export>} {<ENVLDLIBS2>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROTO3='> name:PROTO3)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<check_proto>} {($ Id.VSub_DollarName PROTO3)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [1794]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: {(DQ ($ Id.VSub_DollarName PROTO3))}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ENVCPPFLAGS3='>
                                      name: ENVCPPFLAGS3
                                    )
                                  op: assign_op.Equal
                                  rhs: {<-I> ($ Id.VSub_DollarName PROTO3) <'/usr/include'>}
                                  spids: [1823]
                                )
                              ]
                              redirects: []
                            )
                            (C {<export>} {<ENVCPPFLAGS3>})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ENVLDLIBS3='>
                                      name: ENVLDLIBS3
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <-L> ($ Id.VSub_DollarName PROTO3) <'/lib -L'> 
                                        ($ Id.VSub_DollarName PROTO3) <'/usr/lib'>
                                      )
                                    }
                                  spids: [1834]
                                )
                              ]
                              redirects: []
                            )
                            (C {<export>} {<ENVLDLIBS3>})
                          ]
                          spids: [1804 1817]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1748 1761]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [1688 1701]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<export>} {<ROOT>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {(DQ ($ Id.VSub_DollarName TERMPROTO))}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TERMPROTO='> name:TERMPROTO)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<check_proto>} {($ Id.VSub_DollarName TERMPROTO)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [1881]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVCPPFLAGS4='> name:ENVCPPFLAGS4)
                  op: assign_op.Equal
                  rhs: {(DQ <'-Y I,'> ($ Id.VSub_DollarName TERMPROTO) <'/usr/include'>)}
                  spids: [1891]
                )
              ]
              redirects: []
            )
            (C {<export>} {<ENVCPPFLAGS4>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENVLDLIBS3='> name:ENVLDLIBS3)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName ENVLDLIBS3) <' -Y P,'> ($ Id.VSub_DollarName TERMPROTO) 
                        <'/lib:'> ($ Id.VSub_DollarName TERMPROTO) <'/usr/lib'>
                      )
                    }
                  spids: [1904]
                )
              ]
              redirects: []
            )
            (C {<export>} {<ENVLDLIBS3>})
          ]
          spids: [1862 1875]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'osbld_flag='> name:osbld_flag)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1922]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: {(DQ ($ Id.VSub_DollarName ONBLD_DIR))}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ONBLD_DIR='> name:ONBLD_DIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<'/bin/dirname'>} 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<whence>} {($ Id.VSub_Number 0)})
                                right: <Id.Eof_RParen _>
                              )
                            }
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [1942]
                )
              ]
              redirects: []
            )
          ]
          spids: [1926 1939]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ <':'> ($ Id.VSub_DollarName PATH) <':'>)})
                        (command.Simple
                          words: [{<grep>} {(DQ <':'> (${ Id.VSub_Name ONBLD_DIR) <':'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      negated: T
                      stderr_indices: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (${ Id.VSub_Name ONBLD_DIR) <':'> (${ Id.VSub_Name ONBLD_DIR) <'/'> 
                        (${ Id.VSub_Name MACH) <':'> (${ Id.VSub_Name PATH)
                      )
                    }
                  spids: [1988]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'osbld_flag='> name:osbld_flag)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [2008]
                )
              ]
              redirects: []
            )
          ]
          spids: [1956 1985]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<export>} {<PATH>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {(DQ ($ Id.VSub_DollarName PROTO2))}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PARENT_ROOT='> name:PARENT_ROOT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName PROTO2)}
                  spids: [2039]
                )
              ]
              redirects: []
            )
            (C {<export>} {<PARENT_ROOT>})
          ]
          spids: [2019 2032]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PARENT_ROOT='> name:PARENT_ROOT)
              op: assign_op.Equal
              rhs: (rhs_word.Empty)
              spids: [2054]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (C {<export>} {<ONBLD_DIR>})
    (C {<export>} {<MACH>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'os_rev='> name:os_rev)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<uname>} {<-r>})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2067]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'os_name='> name:os_name)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<uname>} {<-s>})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2076]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: {($ Id.VSub_DollarName os_name)}
                              right: {(DQ <SunOS>)}
                            )
                          right: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {<expr>} {($ Id.VSub_DollarName os_rev)} {<Id.Lit_Colon ':'>} 
                                        {(DQ <5> <Id.Lit_BadBackslash '\\'> <.>)}
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              right: {(DQ <2>)}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'***WARNING: this script is meant to be run on SunOS 5.x.'>)})
            (C {<echo>} 
              {
                (DQ <'            This machine appears to be running: '> 
                  ($ Id.VSub_DollarName os_name) <' '> ($ Id.VSub_DollarName os_rev)
                )
              }
            )
          ]
          spids: [2086 2127]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<echo>} {(DQ )})
    (C {<echo>} {(DQ <'Workspace                    : '> ($ Id.VSub_DollarName wsname))})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {(DQ ($ Id.VSub_DollarName parent))}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<echo>} {(DQ <'Workspace Parent             : '> ($ Id.VSub_DollarName parent))})]
          spids: [2173 2186]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<echo>} 
      {
        (DQ <'Proto area ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
          <'ROOT)           : '> ($ Id.VSub_DollarName ROOT)
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {(DQ ($ Id.VSub_DollarName PARENT_ROOT))}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} 
              {
                (DQ <'Parent proto area ('> 
                  (word_part.EscapedLiteral
                    token: <Id.Lit_EscapedChar '\\$'>
                    ch: '$'
                  ) <'PARENT_ROOT) : '> ($ Id.VSub_DollarName PARENT_ROOT)
                )
              }
            )
          ]
          spids: [2207 2220]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<echo>} 
      {
        (DQ <'Root of source ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
          <'SRC)        : '> ($ Id.VSub_DollarName SRC)
        )
      }
    )
    (C {<echo>} 
      {
        (DQ <'Root of test source ('> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'TSRC)  : '> ($ Id.VSub_DollarName TSRC)
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobEqual
                          left: {($ Id.VSub_DollarName osbld_flag)}
                          right: {(DQ <1>)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Prepended to PATH            : '> ($ Id.VSub_DollarName ONBLD_DIR))})
          ]
          spids: [2252 2267]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<echo>} 
      {
        (DQ <'Current directory ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
          <'PWD)     : '> ($ Id.VSub_DollarName wsname)
        )
      }
    )
    (C {<echo>} {(DQ )})
    (C {<cd>} {($ Id.VSub_DollarName wsname)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {($ Id.VSub_DollarName setenv)})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<cleanup_env>})]
          spids: [2299 2304]
        )
      ]
      else_action: [
        (C {<exec>} 
          {
            (braced_var_sub
              left: <Id.Left_DollarBrace '${'>
              token: <Id.VSub_Name SHELL>
              var_name: SHELL
              suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<sh>})
              right: <Id.Right_DollarBrace '}'>
            )
          } {(DQ ($ Id.VSub_At '@'))}
        )
      ]
      redirects: []
    )
  ]
)