code: function preprocessor_branch(if_directive,
                                   elif_directives,
                                   else_directive) {
        var elseList = elif_directives;
        if (else_directive) {
          elseList = elseList.concat([else_directive]);
        }
        var result = if_directive[0];
        result.guarded_statements = if_directive[1].statements;
        var current_branch = result;
        for (var i = 0; i < elseList.length; i++) {
          current_branch.elseBody = elseList[i][0];
          current_branch.elseBody.guarded_statements =
            elseList[i][1].statements;
          current_branch = current_branch.elseBody;
        }
        return result;
      }
docs: Generates AST Nodes for a preprocessor branch.