(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNAME_R='> name:UNAME_R)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<'/usr/bin/uname'>} {<-r>})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [17]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OS_MAJOR='> name:OS_MAJOR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName UNAME_R)})
                      (C {<'/usr/bin/sed'>} {<-e>} {(SQ <'s/^\\([^.]*\\).*/\\1/'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [27]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OS_MINOR='> name:OS_MINOR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName UNAME_R)})
                      (C {<'/usr/bin/sed'>} {<-e>} {(SQ <'s/^[^.]*\\.\\([^.]*\\).*/\\1/'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [52]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OS_VERSION='> name:OS_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName UNAME_R)})
                      (C {<tr>} {(SQ <.>)} {(SQ <_>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [79]
        )
      ]
      redirects: []
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 125
              stdin_parts: [
                <'#ifndef OS_VERSION_H\n'>
                <'#define OS_VERSION_H\n'>
                <'\n'>
                <'#define SUNOS_'>
                ($ Id.VSub_DollarName OS_VERSION)
                <'\n'>
                <'#define OS_MAJOR '>
                ($ Id.VSub_DollarName OS_MAJOR)
                <'\n'>
                <'#define OS_MINOR '>
                ($ Id.VSub_DollarName OS_MINOR)
                <'\n'>
                <'\n'>
                <'#endif\n'>
              ]
            )
        )
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<new_os_version.h>})
      ]
      more_env: []
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<Id.Lit_LBracket '['>} {<-f>} {<os_version.h>} {<Id.Lit_RBracket ']'>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<'/usr/bin/cmp'>} {<-s>} {<new_os_version.h>} {<os_version.h>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<'/usr/bin/rm'>} {<-f>} {<new_os_version.h>})]
                  spids: [141 152]
                )
              ]
              else_action: [
                (C {<'/usr/bin/rm'>} {<-f>} {<os_version.h>})
                (C {<'/usr/bin/mv'>} {<new_os_version.h>} {<os_version.h>})
              ]
              redirects: []
            )
          ]
          spids: [127 138]
        )
      ]
      else_action: [(C {<'/usr/bin/mv'>} {<new_os_version.h>} {<os_version.h>})]
      redirects: []
    )
  ]
)