16#ifdef PRISM_EXCLUDE_PRETTYPRINT 
   18void pm_prettyprint(
void) {}
 
   26    pm_buffer_append_format(output_buffer, 
"(%" PRIi32 
",%" PRIu32 
")-(%" PRIi32 
",%" PRIu32 
")", start.
line, start.
column, end.
line, end.
column);
 
   32    pm_buffer_append_format(output_buffer, 
":%.*s", (
int) constant->
length, constant->
start);
 
   37    switch (PM_NODE_TYPE(node)) {
 
   41        case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
 
   43            pm_buffer_append_string(output_buffer, 
"@ AliasGlobalVariableNode (location: ", 37);
 
   44            prettyprint_location(output_buffer, parser, &node->
location);
 
   45            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
   49                pm_buffer_concat(output_buffer, prefix_buffer);
 
   50                pm_buffer_append_string(output_buffer, 
"+-- new_name:", 13);
 
   51                pm_buffer_append_byte(output_buffer, 
'\n');
 
   53                size_t prefix_length = prefix_buffer->
length;
 
   54                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
   55                pm_buffer_concat(output_buffer, prefix_buffer);
 
   56                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
new_name, prefix_buffer);
 
   57                prefix_buffer->
length = prefix_length;
 
   62                pm_buffer_concat(output_buffer, prefix_buffer);
 
   63                pm_buffer_append_string(output_buffer, 
"+-- old_name:", 13);
 
   64                pm_buffer_append_byte(output_buffer, 
'\n');
 
   66                size_t prefix_length = prefix_buffer->
length;
 
   67                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
   68                pm_buffer_concat(output_buffer, prefix_buffer);
 
   69                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
old_name, prefix_buffer);
 
   70                prefix_buffer->
length = prefix_length;
 
   75                pm_buffer_concat(output_buffer, prefix_buffer);
 
   76                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
   78                pm_buffer_append_byte(output_buffer, 
' ');
 
   79                prettyprint_location(output_buffer, parser, location);
 
   80                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
   81                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
   82                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
   87        case PM_ALIAS_METHOD_NODE: {
 
   89            pm_buffer_append_string(output_buffer, 
"@ AliasMethodNode (location: ", 29);
 
   90            prettyprint_location(output_buffer, parser, &node->
location);
 
   91            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
   95                pm_buffer_concat(output_buffer, prefix_buffer);
 
   96                pm_buffer_append_string(output_buffer, 
"+-- new_name:", 13);
 
   97                pm_buffer_append_byte(output_buffer, 
'\n');
 
   99                size_t prefix_length = prefix_buffer->
length;
 
  100                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  101                pm_buffer_concat(output_buffer, prefix_buffer);
 
  102                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
new_name, prefix_buffer);
 
  103                prefix_buffer->
length = prefix_length;
 
  108                pm_buffer_concat(output_buffer, prefix_buffer);
 
  109                pm_buffer_append_string(output_buffer, 
"+-- old_name:", 13);
 
  110                pm_buffer_append_byte(output_buffer, 
'\n');
 
  112                size_t prefix_length = prefix_buffer->
length;
 
  113                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  114                pm_buffer_concat(output_buffer, prefix_buffer);
 
  115                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
old_name, prefix_buffer);
 
  116                prefix_buffer->
length = prefix_length;
 
  121                pm_buffer_concat(output_buffer, prefix_buffer);
 
  122                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
  124                pm_buffer_append_byte(output_buffer, 
' ');
 
  125                prettyprint_location(output_buffer, parser, location);
 
  126                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  127                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  128                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  133        case PM_ALTERNATION_PATTERN_NODE: {
 
  135            pm_buffer_append_string(output_buffer, 
"@ AlternationPatternNode (location: ", 36);
 
  136            prettyprint_location(output_buffer, parser, &node->
location);
 
  137            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  141                pm_buffer_concat(output_buffer, prefix_buffer);
 
  142                pm_buffer_append_string(output_buffer, 
"+-- left:", 9);
 
  143                pm_buffer_append_byte(output_buffer, 
'\n');
 
  145                size_t prefix_length = prefix_buffer->
length;
 
  146                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  147                pm_buffer_concat(output_buffer, prefix_buffer);
 
  148                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
 
  149                prefix_buffer->
length = prefix_length;
 
  154                pm_buffer_concat(output_buffer, prefix_buffer);
 
  155                pm_buffer_append_string(output_buffer, 
"+-- right:", 10);
 
  156                pm_buffer_append_byte(output_buffer, 
'\n');
 
  158                size_t prefix_length = prefix_buffer->
length;
 
  159                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  160                pm_buffer_concat(output_buffer, prefix_buffer);
 
  161                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
 
  162                prefix_buffer->
length = prefix_length;
 
  167                pm_buffer_concat(output_buffer, prefix_buffer);
 
  168                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
  170                pm_buffer_append_byte(output_buffer, 
' ');
 
  171                prettyprint_location(output_buffer, parser, location);
 
  172                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  173                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  174                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  181            pm_buffer_append_string(output_buffer, 
"@ AndNode (location: ", 21);
 
  182            prettyprint_location(output_buffer, parser, &node->
location);
 
  183            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  187                pm_buffer_concat(output_buffer, prefix_buffer);
 
  188                pm_buffer_append_string(output_buffer, 
"+-- left:", 9);
 
  189                pm_buffer_append_byte(output_buffer, 
'\n');
 
  191                size_t prefix_length = prefix_buffer->
length;
 
  192                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  193                pm_buffer_concat(output_buffer, prefix_buffer);
 
  194                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
 
  195                prefix_buffer->
length = prefix_length;
 
  200                pm_buffer_concat(output_buffer, prefix_buffer);
 
  201                pm_buffer_append_string(output_buffer, 
"+-- right:", 10);
 
  202                pm_buffer_append_byte(output_buffer, 
'\n');
 
  204                size_t prefix_length = prefix_buffer->
length;
 
  205                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  206                pm_buffer_concat(output_buffer, prefix_buffer);
 
  207                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
 
  208                prefix_buffer->
length = prefix_length;
 
  213                pm_buffer_concat(output_buffer, prefix_buffer);
 
  214                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
  216                pm_buffer_append_byte(output_buffer, 
' ');
 
  217                prettyprint_location(output_buffer, parser, location);
 
  218                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  219                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  220                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  225        case PM_ARGUMENTS_NODE: {
 
  227            pm_buffer_append_string(output_buffer, 
"@ ArgumentsNode (location: ", 27);
 
  228            prettyprint_location(output_buffer, parser, &node->
location);
 
  229            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  233                pm_buffer_concat(output_buffer, prefix_buffer);
 
  234                pm_buffer_append_string(output_buffer, 
"+-- ArgumentsNodeFlags:", 23);
 
  236                if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING) {
 
  237                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
  238                    pm_buffer_append_string(output_buffer, 
" contains_forwarding", 20);
 
  241                if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS) {
 
  242                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
  243                    pm_buffer_append_string(output_buffer, 
" contains_keywords", 18);
 
  246                if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT) {
 
  247                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
  248                    pm_buffer_append_string(output_buffer, 
" contains_keyword_splat", 23);
 
  251                if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT) {
 
  252                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
  253                    pm_buffer_append_string(output_buffer, 
" contains_splat", 15);
 
  256                if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS) {
 
  257                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
  258                    pm_buffer_append_string(output_buffer, 
" contains_multiple_splats", 25);
 
  261                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
  262                pm_buffer_append_byte(output_buffer, 
'\n');
 
  267                pm_buffer_concat(output_buffer, prefix_buffer);
 
  268                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
  269                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
arguments.
size));
 
  272                for (uint32_t index = 0; index < last_index; index++) {
 
  273                    size_t prefix_length = prefix_buffer->
length;
 
  274                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
  275                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  276                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
  277                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
  279                    prefix_buffer->
length = prefix_length;
 
  285        case PM_ARRAY_NODE: {
 
  287            pm_buffer_append_string(output_buffer, 
"@ ArrayNode (location: ", 23);
 
  288            prettyprint_location(output_buffer, parser, &node->
location);
 
  289            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  293                pm_buffer_concat(output_buffer, prefix_buffer);
 
  294                pm_buffer_append_string(output_buffer, 
"+-- ArrayNodeFlags:", 19);
 
  296                if (cast->
base.
flags & PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT) {
 
  297                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
  298                    pm_buffer_append_string(output_buffer, 
" contains_splat", 15);
 
  301                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
  302                pm_buffer_append_byte(output_buffer, 
'\n');
 
  307                pm_buffer_concat(output_buffer, prefix_buffer);
 
  308                pm_buffer_append_string(output_buffer, 
"+-- elements:", 13);
 
  309                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
elements.
size));
 
  312                for (uint32_t index = 0; index < last_index; index++) {
 
  313                    size_t prefix_length = prefix_buffer->
length;
 
  314                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  315                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  316                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
  317                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
  319                    prefix_buffer->
length = prefix_length;
 
  325                pm_buffer_concat(output_buffer, prefix_buffer);
 
  326                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
  328                if (location->
start == NULL) {
 
  329                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  331                    pm_buffer_append_byte(output_buffer, 
' ');
 
  332                    prettyprint_location(output_buffer, parser, location);
 
  333                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  334                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  335                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  341                pm_buffer_concat(output_buffer, prefix_buffer);
 
  342                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
  344                if (location->
start == NULL) {
 
  345                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  347                    pm_buffer_append_byte(output_buffer, 
' ');
 
  348                    prettyprint_location(output_buffer, parser, location);
 
  349                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  350                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  351                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  357        case PM_ARRAY_PATTERN_NODE: {
 
  359            pm_buffer_append_string(output_buffer, 
"@ ArrayPatternNode (location: ", 30);
 
  360            prettyprint_location(output_buffer, parser, &node->
location);
 
  361            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  365                pm_buffer_concat(output_buffer, prefix_buffer);
 
  366                pm_buffer_append_string(output_buffer, 
"+-- constant:", 13);
 
  368                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  370                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  372                    size_t prefix_length = prefix_buffer->
length;
 
  373                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  374                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  375                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
constant, prefix_buffer);
 
  376                    prefix_buffer->
length = prefix_length;
 
  382                pm_buffer_concat(output_buffer, prefix_buffer);
 
  383                pm_buffer_append_string(output_buffer, 
"+-- requireds:", 14);
 
  384                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
requireds.
size));
 
  387                for (uint32_t index = 0; index < last_index; index++) {
 
  388                    size_t prefix_length = prefix_buffer->
length;
 
  389                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  390                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  391                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
  392                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
  394                    prefix_buffer->
length = prefix_length;
 
  400                pm_buffer_concat(output_buffer, prefix_buffer);
 
  401                pm_buffer_append_string(output_buffer, 
"+-- rest:", 9);
 
  402                if (cast->
rest == NULL) {
 
  403                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  405                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  407                    size_t prefix_length = prefix_buffer->
length;
 
  408                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  409                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  410                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
 
  411                    prefix_buffer->
length = prefix_length;
 
  417                pm_buffer_concat(output_buffer, prefix_buffer);
 
  418                pm_buffer_append_string(output_buffer, 
"+-- posts:", 10);
 
  419                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
posts.
size));
 
  422                for (uint32_t index = 0; index < last_index; index++) {
 
  423                    size_t prefix_length = prefix_buffer->
length;
 
  424                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  425                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  426                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
  427                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
  428                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
posts.
nodes[index], prefix_buffer);
 
  429                    prefix_buffer->
length = prefix_length;
 
  435                pm_buffer_concat(output_buffer, prefix_buffer);
 
  436                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
  438                if (location->
start == NULL) {
 
  439                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  441                    pm_buffer_append_byte(output_buffer, 
' ');
 
  442                    prettyprint_location(output_buffer, parser, location);
 
  443                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  444                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  445                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  451                pm_buffer_concat(output_buffer, prefix_buffer);
 
  452                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
  454                if (location->
start == NULL) {
 
  455                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  457                    pm_buffer_append_byte(output_buffer, 
' ');
 
  458                    prettyprint_location(output_buffer, parser, location);
 
  459                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  460                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  461                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  467        case PM_ASSOC_NODE: {
 
  469            pm_buffer_append_string(output_buffer, 
"@ AssocNode (location: ", 23);
 
  470            prettyprint_location(output_buffer, parser, &node->
location);
 
  471            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  475                pm_buffer_concat(output_buffer, prefix_buffer);
 
  476                pm_buffer_append_string(output_buffer, 
"+-- key:", 8);
 
  477                pm_buffer_append_byte(output_buffer, 
'\n');
 
  479                size_t prefix_length = prefix_buffer->
length;
 
  480                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  481                pm_buffer_concat(output_buffer, prefix_buffer);
 
  482                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
key, prefix_buffer);
 
  483                prefix_buffer->
length = prefix_length;
 
  488                pm_buffer_concat(output_buffer, prefix_buffer);
 
  489                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
  490                pm_buffer_append_byte(output_buffer, 
'\n');
 
  492                size_t prefix_length = prefix_buffer->
length;
 
  493                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  494                pm_buffer_concat(output_buffer, prefix_buffer);
 
  495                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
  496                prefix_buffer->
length = prefix_length;
 
  501                pm_buffer_concat(output_buffer, prefix_buffer);
 
  502                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
  504                if (location->
start == NULL) {
 
  505                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  507                    pm_buffer_append_byte(output_buffer, 
' ');
 
  508                    prettyprint_location(output_buffer, parser, location);
 
  509                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  510                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  511                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  517        case PM_ASSOC_SPLAT_NODE: {
 
  519            pm_buffer_append_string(output_buffer, 
"@ AssocSplatNode (location: ", 28);
 
  520            prettyprint_location(output_buffer, parser, &node->
location);
 
  521            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  525                pm_buffer_concat(output_buffer, prefix_buffer);
 
  526                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
  527                if (cast->
value == NULL) {
 
  528                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  530                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  532                    size_t prefix_length = prefix_buffer->
length;
 
  533                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  534                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  535                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
  536                    prefix_buffer->
length = prefix_length;
 
  542                pm_buffer_concat(output_buffer, prefix_buffer);
 
  543                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
  545                pm_buffer_append_byte(output_buffer, 
' ');
 
  546                prettyprint_location(output_buffer, parser, location);
 
  547                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  548                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  549                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  554        case PM_BACK_REFERENCE_READ_NODE: {
 
  556            pm_buffer_append_string(output_buffer, 
"@ BackReferenceReadNode (location: ", 35);
 
  557            prettyprint_location(output_buffer, parser, &node->
location);
 
  558            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  562                pm_buffer_concat(output_buffer, prefix_buffer);
 
  563                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
  564                pm_buffer_append_byte(output_buffer, 
' ');
 
  565                prettyprint_constant(output_buffer, parser, cast->
name);
 
  566                pm_buffer_append_byte(output_buffer, 
'\n');
 
  571        case PM_BEGIN_NODE: {
 
  573            pm_buffer_append_string(output_buffer, 
"@ BeginNode (location: ", 23);
 
  574            prettyprint_location(output_buffer, parser, &node->
location);
 
  575            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  579                pm_buffer_concat(output_buffer, prefix_buffer);
 
  580                pm_buffer_append_string(output_buffer, 
"+-- begin_keyword_loc:", 22);
 
  582                if (location->
start == NULL) {
 
  583                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  585                    pm_buffer_append_byte(output_buffer, 
' ');
 
  586                    prettyprint_location(output_buffer, parser, location);
 
  587                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  588                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  589                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  595                pm_buffer_concat(output_buffer, prefix_buffer);
 
  596                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
  598                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  600                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  602                    size_t prefix_length = prefix_buffer->
length;
 
  603                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  604                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  606                    prefix_buffer->
length = prefix_length;
 
  612                pm_buffer_concat(output_buffer, prefix_buffer);
 
  613                pm_buffer_append_string(output_buffer, 
"+-- rescue_clause:", 18);
 
  615                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  617                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  619                    size_t prefix_length = prefix_buffer->
length;
 
  620                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  621                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  623                    prefix_buffer->
length = prefix_length;
 
  629                pm_buffer_concat(output_buffer, prefix_buffer);
 
  630                pm_buffer_append_string(output_buffer, 
"+-- else_clause:", 16);
 
  632                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  634                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  636                    size_t prefix_length = prefix_buffer->
length;
 
  637                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  638                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  640                    prefix_buffer->
length = prefix_length;
 
  646                pm_buffer_concat(output_buffer, prefix_buffer);
 
  647                pm_buffer_append_string(output_buffer, 
"+-- ensure_clause:", 18);
 
  649                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  651                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  653                    size_t prefix_length = prefix_buffer->
length;
 
  654                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  655                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  657                    prefix_buffer->
length = prefix_length;
 
  663                pm_buffer_concat(output_buffer, prefix_buffer);
 
  664                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
  666                if (location->
start == NULL) {
 
  667                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  669                    pm_buffer_append_byte(output_buffer, 
' ');
 
  670                    prettyprint_location(output_buffer, parser, location);
 
  671                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  672                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  673                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  679        case PM_BLOCK_ARGUMENT_NODE: {
 
  681            pm_buffer_append_string(output_buffer, 
"@ BlockArgumentNode (location: ", 31);
 
  682            prettyprint_location(output_buffer, parser, &node->
location);
 
  683            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  687                pm_buffer_concat(output_buffer, prefix_buffer);
 
  688                pm_buffer_append_string(output_buffer, 
"+-- expression:", 15);
 
  690                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  692                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  694                    size_t prefix_length = prefix_buffer->
length;
 
  695                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  696                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  698                    prefix_buffer->
length = prefix_length;
 
  704                pm_buffer_concat(output_buffer, prefix_buffer);
 
  705                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
  707                pm_buffer_append_byte(output_buffer, 
' ');
 
  708                prettyprint_location(output_buffer, parser, location);
 
  709                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  710                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  711                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  716        case PM_BLOCK_LOCAL_VARIABLE_NODE: {
 
  718            pm_buffer_append_string(output_buffer, 
"@ BlockLocalVariableNode (location: ", 36);
 
  719            prettyprint_location(output_buffer, parser, &node->
location);
 
  720            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  724                pm_buffer_concat(output_buffer, prefix_buffer);
 
  725                pm_buffer_append_string(output_buffer, 
"+-- ParameterFlags:", 19);
 
  727                if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
 
  728                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
  729                    pm_buffer_append_string(output_buffer, 
" repeated_parameter", 19);
 
  732                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
  733                pm_buffer_append_byte(output_buffer, 
'\n');
 
  738                pm_buffer_concat(output_buffer, prefix_buffer);
 
  739                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
  740                pm_buffer_append_byte(output_buffer, 
' ');
 
  741                prettyprint_constant(output_buffer, parser, cast->
name);
 
  742                pm_buffer_append_byte(output_buffer, 
'\n');
 
  747        case PM_BLOCK_NODE: {
 
  749            pm_buffer_append_string(output_buffer, 
"@ BlockNode (location: ", 23);
 
  750            prettyprint_location(output_buffer, parser, &node->
location);
 
  751            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  755                pm_buffer_concat(output_buffer, prefix_buffer);
 
  756                pm_buffer_append_string(output_buffer, 
"+-- locals:", 11);
 
  757                pm_buffer_append_string(output_buffer, 
" [", 2);
 
  758                for (uint32_t index = 0; index < cast->
locals.
size; index++) {
 
  759                    if (index != 0) pm_buffer_append_string(output_buffer, 
", ", 2);
 
  760                    prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
 
  762                pm_buffer_append_string(output_buffer, 
"]\n", 2);
 
  767                pm_buffer_concat(output_buffer, prefix_buffer);
 
  768                pm_buffer_append_string(output_buffer, 
"+-- parameters:", 15);
 
  770                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  772                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  774                    size_t prefix_length = prefix_buffer->
length;
 
  775                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  776                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  778                    prefix_buffer->
length = prefix_length;
 
  784                pm_buffer_concat(output_buffer, prefix_buffer);
 
  785                pm_buffer_append_string(output_buffer, 
"+-- body:", 9);
 
  786                if (cast->
body == NULL) {
 
  787                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  789                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  791                    size_t prefix_length = prefix_buffer->
length;
 
  792                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  793                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  794                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
 
  795                    prefix_buffer->
length = prefix_length;
 
  801                pm_buffer_concat(output_buffer, prefix_buffer);
 
  802                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
  804                pm_buffer_append_byte(output_buffer, 
' ');
 
  805                prettyprint_location(output_buffer, parser, location);
 
  806                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  807                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  808                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  813                pm_buffer_concat(output_buffer, prefix_buffer);
 
  814                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
  816                pm_buffer_append_byte(output_buffer, 
' ');
 
  817                prettyprint_location(output_buffer, parser, location);
 
  818                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  819                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  820                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  825        case PM_BLOCK_PARAMETER_NODE: {
 
  827            pm_buffer_append_string(output_buffer, 
"@ BlockParameterNode (location: ", 32);
 
  828            prettyprint_location(output_buffer, parser, &node->
location);
 
  829            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  833                pm_buffer_concat(output_buffer, prefix_buffer);
 
  834                pm_buffer_append_string(output_buffer, 
"+-- ParameterFlags:", 19);
 
  836                if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
 
  837                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
  838                    pm_buffer_append_string(output_buffer, 
" repeated_parameter", 19);
 
  841                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
  842                pm_buffer_append_byte(output_buffer, 
'\n');
 
  847                pm_buffer_concat(output_buffer, prefix_buffer);
 
  848                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
  849                if (cast->
name == 0) {
 
  850                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  852                    pm_buffer_append_byte(output_buffer, 
' ');
 
  853                    prettyprint_constant(output_buffer, parser, cast->
name);
 
  854                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  860                pm_buffer_concat(output_buffer, prefix_buffer);
 
  861                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
  863                if (location->
start == NULL) {
 
  864                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  866                    pm_buffer_append_byte(output_buffer, 
' ');
 
  867                    prettyprint_location(output_buffer, parser, location);
 
  868                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  869                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  870                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  876                pm_buffer_concat(output_buffer, prefix_buffer);
 
  877                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
  879                pm_buffer_append_byte(output_buffer, 
' ');
 
  880                prettyprint_location(output_buffer, parser, location);
 
  881                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  882                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  883                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  888        case PM_BLOCK_PARAMETERS_NODE: {
 
  890            pm_buffer_append_string(output_buffer, 
"@ BlockParametersNode (location: ", 33);
 
  891            prettyprint_location(output_buffer, parser, &node->
location);
 
  892            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  896                pm_buffer_concat(output_buffer, prefix_buffer);
 
  897                pm_buffer_append_string(output_buffer, 
"+-- parameters:", 15);
 
  899                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  901                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  903                    size_t prefix_length = prefix_buffer->
length;
 
  904                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  905                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  907                    prefix_buffer->
length = prefix_length;
 
  913                pm_buffer_concat(output_buffer, prefix_buffer);
 
  914                pm_buffer_append_string(output_buffer, 
"+-- locals:", 11);
 
  915                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
locals.
size));
 
  918                for (uint32_t index = 0; index < last_index; index++) {
 
  919                    size_t prefix_length = prefix_buffer->
length;
 
  920                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  921                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  922                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
  923                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
  924                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
locals.
nodes[index], prefix_buffer);
 
  925                    prefix_buffer->
length = prefix_length;
 
  931                pm_buffer_concat(output_buffer, prefix_buffer);
 
  932                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
  934                if (location->
start == NULL) {
 
  935                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  937                    pm_buffer_append_byte(output_buffer, 
' ');
 
  938                    prettyprint_location(output_buffer, parser, location);
 
  939                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  940                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  941                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  947                pm_buffer_concat(output_buffer, prefix_buffer);
 
  948                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
  950                if (location->
start == NULL) {
 
  951                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  953                    pm_buffer_append_byte(output_buffer, 
' ');
 
  954                    prettyprint_location(output_buffer, parser, location);
 
  955                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  956                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  957                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
  963        case PM_BREAK_NODE: {
 
  965            pm_buffer_append_string(output_buffer, 
"@ BreakNode (location: ", 23);
 
  966            prettyprint_location(output_buffer, parser, &node->
location);
 
  967            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
  971                pm_buffer_concat(output_buffer, prefix_buffer);
 
  972                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
  974                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
  976                    pm_buffer_append_byte(output_buffer, 
'\n');
 
  978                    size_t prefix_length = prefix_buffer->
length;
 
  979                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
  980                    pm_buffer_concat(output_buffer, prefix_buffer);
 
  981                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
  982                    prefix_buffer->
length = prefix_length;
 
  988                pm_buffer_concat(output_buffer, prefix_buffer);
 
  989                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
  991                pm_buffer_append_byte(output_buffer, 
' ');
 
  992                prettyprint_location(output_buffer, parser, location);
 
  993                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
  994                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
  995                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1000        case PM_CALL_AND_WRITE_NODE: {
 
 1002            pm_buffer_append_string(output_buffer, 
"@ CallAndWriteNode (location: ", 30);
 
 1003            prettyprint_location(output_buffer, parser, &node->
location);
 
 1004            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1008                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1009                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 1011                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 1012                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1013                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 1016                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 1017                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1018                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 1021                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 1022                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1023                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 1026                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 1027                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1028                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 1031                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 1032                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1037                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1038                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 1040                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1042                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1044                    size_t prefix_length = prefix_buffer->
length;
 
 1045                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1046                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1047                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 1048                    prefix_buffer->
length = prefix_length;
 
 1054                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1055                pm_buffer_append_string(output_buffer, 
"+-- call_operator_loc:", 22);
 
 1057                if (location->
start == NULL) {
 
 1058                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1060                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1061                    prettyprint_location(output_buffer, parser, location);
 
 1062                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1063                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1064                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1070                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1071                pm_buffer_append_string(output_buffer, 
"+-- message_loc:", 16);
 
 1073                if (location->
start == NULL) {
 
 1074                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1076                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1077                    prettyprint_location(output_buffer, parser, location);
 
 1078                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1079                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1080                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1086                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1087                pm_buffer_append_string(output_buffer, 
"+-- read_name:", 14);
 
 1088                pm_buffer_append_byte(output_buffer, 
' ');
 
 1089                prettyprint_constant(output_buffer, parser, cast->
read_name);
 
 1090                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1095                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1096                pm_buffer_append_string(output_buffer, 
"+-- write_name:", 15);
 
 1097                pm_buffer_append_byte(output_buffer, 
' ');
 
 1098                prettyprint_constant(output_buffer, parser, cast->
write_name);
 
 1099                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1104                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1105                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 1107                pm_buffer_append_byte(output_buffer, 
' ');
 
 1108                prettyprint_location(output_buffer, parser, location);
 
 1109                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1110                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1111                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1116                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1117                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 1118                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1120                size_t prefix_length = prefix_buffer->
length;
 
 1121                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 1122                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1123                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 1124                prefix_buffer->
length = prefix_length;
 
 1129        case PM_CALL_NODE: {
 
 1131            pm_buffer_append_string(output_buffer, 
"@ CallNode (location: ", 22);
 
 1132            prettyprint_location(output_buffer, parser, &node->
location);
 
 1133            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1137                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1138                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 1140                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 1141                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1142                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 1145                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 1146                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1147                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 1150                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 1151                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1152                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 1155                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 1156                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1157                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 1160                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 1161                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1166                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1167                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 1169                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1171                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1173                    size_t prefix_length = prefix_buffer->
length;
 
 1174                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1175                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1176                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 1177                    prefix_buffer->
length = prefix_length;
 
 1183                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1184                pm_buffer_append_string(output_buffer, 
"+-- call_operator_loc:", 22);
 
 1186                if (location->
start == NULL) {
 
 1187                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1189                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1190                    prettyprint_location(output_buffer, parser, location);
 
 1191                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1192                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1193                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1199                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1200                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 1201                pm_buffer_append_byte(output_buffer, 
' ');
 
 1202                prettyprint_constant(output_buffer, parser, cast->
name);
 
 1203                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1208                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1209                pm_buffer_append_string(output_buffer, 
"+-- message_loc:", 16);
 
 1211                if (location->
start == NULL) {
 
 1212                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1214                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1215                    prettyprint_location(output_buffer, parser, location);
 
 1216                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1217                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1218                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1224                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1225                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 1227                if (location->
start == NULL) {
 
 1228                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1230                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1231                    prettyprint_location(output_buffer, parser, location);
 
 1232                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1233                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1234                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1240                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1241                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 1243                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1245                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1247                    size_t prefix_length = prefix_buffer->
length;
 
 1248                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1249                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1250                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 1251                    prefix_buffer->
length = prefix_length;
 
 1257                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1258                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 1260                if (location->
start == NULL) {
 
 1261                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1263                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1264                    prettyprint_location(output_buffer, parser, location);
 
 1265                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1266                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1267                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1273                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1274                pm_buffer_append_string(output_buffer, 
"+-- equal_loc:", 14);
 
 1276                if (location->
start == NULL) {
 
 1277                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1279                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1280                    prettyprint_location(output_buffer, parser, location);
 
 1281                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1282                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1283                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1289                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1290                pm_buffer_append_string(output_buffer, 
"+-- block:", 10);
 
 1291                if (cast->
block == NULL) {
 
 1292                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1294                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1296                    size_t prefix_length = prefix_buffer->
length;
 
 1297                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 1298                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1299                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
 
 1300                    prefix_buffer->
length = prefix_length;
 
 1306        case PM_CALL_OPERATOR_WRITE_NODE: {
 
 1308            pm_buffer_append_string(output_buffer, 
"@ CallOperatorWriteNode (location: ", 35);
 
 1309            prettyprint_location(output_buffer, parser, &node->
location);
 
 1310            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1314                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1315                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 1317                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 1318                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1319                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 1322                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 1323                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1324                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 1327                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 1328                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1329                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 1332                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 1333                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1334                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 1337                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 1338                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1343                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1344                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 1346                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1348                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1350                    size_t prefix_length = prefix_buffer->
length;
 
 1351                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1352                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1353                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 1354                    prefix_buffer->
length = prefix_length;
 
 1360                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1361                pm_buffer_append_string(output_buffer, 
"+-- call_operator_loc:", 22);
 
 1363                if (location->
start == NULL) {
 
 1364                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1366                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1367                    prettyprint_location(output_buffer, parser, location);
 
 1368                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1369                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1370                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1376                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1377                pm_buffer_append_string(output_buffer, 
"+-- message_loc:", 16);
 
 1379                if (location->
start == NULL) {
 
 1380                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1382                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1383                    prettyprint_location(output_buffer, parser, location);
 
 1384                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1385                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1386                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1392                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1393                pm_buffer_append_string(output_buffer, 
"+-- read_name:", 14);
 
 1394                pm_buffer_append_byte(output_buffer, 
' ');
 
 1395                prettyprint_constant(output_buffer, parser, cast->
read_name);
 
 1396                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1401                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1402                pm_buffer_append_string(output_buffer, 
"+-- write_name:", 15);
 
 1403                pm_buffer_append_byte(output_buffer, 
' ');
 
 1404                prettyprint_constant(output_buffer, parser, cast->
write_name);
 
 1405                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1410                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1411                pm_buffer_append_string(output_buffer, 
"+-- binary_operator:", 20);
 
 1412                pm_buffer_append_byte(output_buffer, 
' ');
 
 1414                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1419                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1420                pm_buffer_append_string(output_buffer, 
"+-- binary_operator_loc:", 24);
 
 1422                pm_buffer_append_byte(output_buffer, 
' ');
 
 1423                prettyprint_location(output_buffer, parser, location);
 
 1424                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1425                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1426                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1431                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1432                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 1433                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1435                size_t prefix_length = prefix_buffer->
length;
 
 1436                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 1437                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1438                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 1439                prefix_buffer->
length = prefix_length;
 
 1444        case PM_CALL_OR_WRITE_NODE: {
 
 1446            pm_buffer_append_string(output_buffer, 
"@ CallOrWriteNode (location: ", 29);
 
 1447            prettyprint_location(output_buffer, parser, &node->
location);
 
 1448            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1452                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1453                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 1455                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 1456                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1457                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 1460                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 1461                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1462                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 1465                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 1466                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1467                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 1470                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 1471                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1472                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 1475                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 1476                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1481                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1482                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 1484                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1486                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1488                    size_t prefix_length = prefix_buffer->
length;
 
 1489                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1490                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1491                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 1492                    prefix_buffer->
length = prefix_length;
 
 1498                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1499                pm_buffer_append_string(output_buffer, 
"+-- call_operator_loc:", 22);
 
 1501                if (location->
start == NULL) {
 
 1502                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1504                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1505                    prettyprint_location(output_buffer, parser, location);
 
 1506                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1507                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1508                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1514                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1515                pm_buffer_append_string(output_buffer, 
"+-- message_loc:", 16);
 
 1517                if (location->
start == NULL) {
 
 1518                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1520                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1521                    prettyprint_location(output_buffer, parser, location);
 
 1522                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1523                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1524                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1530                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1531                pm_buffer_append_string(output_buffer, 
"+-- read_name:", 14);
 
 1532                pm_buffer_append_byte(output_buffer, 
' ');
 
 1533                prettyprint_constant(output_buffer, parser, cast->
read_name);
 
 1534                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1539                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1540                pm_buffer_append_string(output_buffer, 
"+-- write_name:", 15);
 
 1541                pm_buffer_append_byte(output_buffer, 
' ');
 
 1542                prettyprint_constant(output_buffer, parser, cast->
write_name);
 
 1543                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1548                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1549                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 1551                pm_buffer_append_byte(output_buffer, 
' ');
 
 1552                prettyprint_location(output_buffer, parser, location);
 
 1553                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1554                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1555                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1560                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1561                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 1562                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1564                size_t prefix_length = prefix_buffer->
length;
 
 1565                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 1566                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1567                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 1568                prefix_buffer->
length = prefix_length;
 
 1573        case PM_CALL_TARGET_NODE: {
 
 1575            pm_buffer_append_string(output_buffer, 
"@ CallTargetNode (location: ", 28);
 
 1576            prettyprint_location(output_buffer, parser, &node->
location);
 
 1577            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1581                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1582                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 1584                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 1585                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1586                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 1589                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 1590                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1591                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 1594                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 1595                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1596                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 1599                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 1600                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 1601                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 1604                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 1605                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1610                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1611                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 1612                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1614                size_t prefix_length = prefix_buffer->
length;
 
 1615                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1616                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1617                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 1618                prefix_buffer->
length = prefix_length;
 
 1623                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1624                pm_buffer_append_string(output_buffer, 
"+-- call_operator_loc:", 22);
 
 1626                pm_buffer_append_byte(output_buffer, 
' ');
 
 1627                prettyprint_location(output_buffer, parser, location);
 
 1628                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1629                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1630                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1635                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1636                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 1637                pm_buffer_append_byte(output_buffer, 
' ');
 
 1638                prettyprint_constant(output_buffer, parser, cast->
name);
 
 1639                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1644                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1645                pm_buffer_append_string(output_buffer, 
"+-- message_loc:", 16);
 
 1647                pm_buffer_append_byte(output_buffer, 
' ');
 
 1648                prettyprint_location(output_buffer, parser, location);
 
 1649                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1650                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1651                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1656        case PM_CAPTURE_PATTERN_NODE: {
 
 1658            pm_buffer_append_string(output_buffer, 
"@ CapturePatternNode (location: ", 32);
 
 1659            prettyprint_location(output_buffer, parser, &node->
location);
 
 1660            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1664                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1665                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 1666                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1668                size_t prefix_length = prefix_buffer->
length;
 
 1669                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1670                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1671                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 1672                prefix_buffer->
length = prefix_length;
 
 1677                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1678                pm_buffer_append_string(output_buffer, 
"+-- target:", 11);
 
 1679                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1681                size_t prefix_length = prefix_buffer->
length;
 
 1682                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1683                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1684                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
 
 1685                prefix_buffer->
length = prefix_length;
 
 1690                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1691                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 1693                pm_buffer_append_byte(output_buffer, 
' ');
 
 1694                prettyprint_location(output_buffer, parser, location);
 
 1695                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1696                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1697                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1702        case PM_CASE_MATCH_NODE: {
 
 1704            pm_buffer_append_string(output_buffer, 
"@ CaseMatchNode (location: ", 27);
 
 1705            prettyprint_location(output_buffer, parser, &node->
location);
 
 1706            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1710                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1711                pm_buffer_append_string(output_buffer, 
"+-- predicate:", 14);
 
 1713                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1715                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1717                    size_t prefix_length = prefix_buffer->
length;
 
 1718                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1719                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1720                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
 
 1721                    prefix_buffer->
length = prefix_length;
 
 1727                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1728                pm_buffer_append_string(output_buffer, 
"+-- conditions:", 15);
 
 1729                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
conditions.
size));
 
 1732                for (uint32_t index = 0; index < last_index; index++) {
 
 1733                    size_t prefix_length = prefix_buffer->
length;
 
 1734                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1735                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1736                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 1737                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 1739                    prefix_buffer->
length = prefix_length;
 
 1745                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1746                pm_buffer_append_string(output_buffer, 
"+-- else_clause:", 16);
 
 1748                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1750                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1752                    size_t prefix_length = prefix_buffer->
length;
 
 1753                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1754                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1756                    prefix_buffer->
length = prefix_length;
 
 1762                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1763                pm_buffer_append_string(output_buffer, 
"+-- case_keyword_loc:", 21);
 
 1765                pm_buffer_append_byte(output_buffer, 
' ');
 
 1766                prettyprint_location(output_buffer, parser, location);
 
 1767                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1768                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1769                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1774                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1775                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 1777                pm_buffer_append_byte(output_buffer, 
' ');
 
 1778                prettyprint_location(output_buffer, parser, location);
 
 1779                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1780                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1781                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1786        case PM_CASE_NODE: {
 
 1788            pm_buffer_append_string(output_buffer, 
"@ CaseNode (location: ", 22);
 
 1789            prettyprint_location(output_buffer, parser, &node->
location);
 
 1790            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1794                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1795                pm_buffer_append_string(output_buffer, 
"+-- predicate:", 14);
 
 1797                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1799                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1801                    size_t prefix_length = prefix_buffer->
length;
 
 1802                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1803                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1804                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
 
 1805                    prefix_buffer->
length = prefix_length;
 
 1811                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1812                pm_buffer_append_string(output_buffer, 
"+-- conditions:", 15);
 
 1813                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
conditions.
size));
 
 1816                for (uint32_t index = 0; index < last_index; index++) {
 
 1817                    size_t prefix_length = prefix_buffer->
length;
 
 1818                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1819                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1820                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 1821                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 1823                    prefix_buffer->
length = prefix_length;
 
 1829                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1830                pm_buffer_append_string(output_buffer, 
"+-- else_clause:", 16);
 
 1832                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1834                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1836                    size_t prefix_length = prefix_buffer->
length;
 
 1837                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1838                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1840                    prefix_buffer->
length = prefix_length;
 
 1846                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1847                pm_buffer_append_string(output_buffer, 
"+-- case_keyword_loc:", 21);
 
 1849                pm_buffer_append_byte(output_buffer, 
' ');
 
 1850                prettyprint_location(output_buffer, parser, location);
 
 1851                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1852                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1853                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1858                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1859                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 1861                pm_buffer_append_byte(output_buffer, 
' ');
 
 1862                prettyprint_location(output_buffer, parser, location);
 
 1863                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1864                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1865                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1870        case PM_CLASS_NODE: {
 
 1872            pm_buffer_append_string(output_buffer, 
"@ ClassNode (location: ", 23);
 
 1873            prettyprint_location(output_buffer, parser, &node->
location);
 
 1874            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1878                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1879                pm_buffer_append_string(output_buffer, 
"+-- locals:", 11);
 
 1880                pm_buffer_append_string(output_buffer, 
" [", 2);
 
 1881                for (uint32_t index = 0; index < cast->
locals.
size; index++) {
 
 1882                    if (index != 0) pm_buffer_append_string(output_buffer, 
", ", 2);
 
 1883                    prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
 
 1885                pm_buffer_append_string(output_buffer, 
"]\n", 2);
 
 1890                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1891                pm_buffer_append_string(output_buffer, 
"+-- class_keyword_loc:", 22);
 
 1893                pm_buffer_append_byte(output_buffer, 
' ');
 
 1894                prettyprint_location(output_buffer, parser, location);
 
 1895                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1896                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1897                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1902                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1903                pm_buffer_append_string(output_buffer, 
"+-- constant_path:", 18);
 
 1904                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1906                size_t prefix_length = prefix_buffer->
length;
 
 1907                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1908                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1910                prefix_buffer->
length = prefix_length;
 
 1915                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1916                pm_buffer_append_string(output_buffer, 
"+-- inheritance_operator_loc:", 29);
 
 1918                if (location->
start == NULL) {
 
 1919                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1921                    pm_buffer_append_byte(output_buffer, 
' ');
 
 1922                    prettyprint_location(output_buffer, parser, location);
 
 1923                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1924                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1925                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1931                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1932                pm_buffer_append_string(output_buffer, 
"+-- superclass:", 15);
 
 1934                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1936                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1938                    size_t prefix_length = prefix_buffer->
length;
 
 1939                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1940                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1942                    prefix_buffer->
length = prefix_length;
 
 1948                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1949                pm_buffer_append_string(output_buffer, 
"+-- body:", 9);
 
 1950                if (cast->
body == NULL) {
 
 1951                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 1953                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 1955                    size_t prefix_length = prefix_buffer->
length;
 
 1956                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 1957                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 1958                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
 
 1959                    prefix_buffer->
length = prefix_length;
 
 1965                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1966                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 1968                pm_buffer_append_byte(output_buffer, 
' ');
 
 1969                prettyprint_location(output_buffer, parser, location);
 
 1970                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 1971                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 1972                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 1977                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1978                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 1979                pm_buffer_append_byte(output_buffer, 
' ');
 
 1980                prettyprint_constant(output_buffer, parser, cast->
name);
 
 1981                pm_buffer_append_byte(output_buffer, 
'\n');
 
 1986        case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
 
 1988            pm_buffer_append_string(output_buffer, 
"@ ClassVariableAndWriteNode (location: ", 39);
 
 1989            prettyprint_location(output_buffer, parser, &node->
location);
 
 1990            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 1994                pm_buffer_concat(output_buffer, prefix_buffer);
 
 1995                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 1996                pm_buffer_append_byte(output_buffer, 
' ');
 
 1997                prettyprint_constant(output_buffer, parser, cast->
name);
 
 1998                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2003                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2004                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2006                pm_buffer_append_byte(output_buffer, 
' ');
 
 2007                prettyprint_location(output_buffer, parser, location);
 
 2008                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2009                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2010                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2015                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2016                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2018                pm_buffer_append_byte(output_buffer, 
' ');
 
 2019                prettyprint_location(output_buffer, parser, location);
 
 2020                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2021                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2022                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2027                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2028                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2029                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2031                size_t prefix_length = prefix_buffer->
length;
 
 2032                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 2033                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2034                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2035                prefix_buffer->
length = prefix_length;
 
 2040        case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
 
 2042            pm_buffer_append_string(output_buffer, 
"@ ClassVariableOperatorWriteNode (location: ", 44);
 
 2043            prettyprint_location(output_buffer, parser, &node->
location);
 
 2044            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2048                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2049                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2050                pm_buffer_append_byte(output_buffer, 
' ');
 
 2051                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2052                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2057                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2058                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2060                pm_buffer_append_byte(output_buffer, 
' ');
 
 2061                prettyprint_location(output_buffer, parser, location);
 
 2062                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2063                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2064                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2069                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2070                pm_buffer_append_string(output_buffer, 
"+-- binary_operator_loc:", 24);
 
 2072                pm_buffer_append_byte(output_buffer, 
' ');
 
 2073                prettyprint_location(output_buffer, parser, location);
 
 2074                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2075                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2076                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2081                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2082                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2083                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2085                size_t prefix_length = prefix_buffer->
length;
 
 2086                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2087                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2088                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2089                prefix_buffer->
length = prefix_length;
 
 2094                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2095                pm_buffer_append_string(output_buffer, 
"+-- binary_operator:", 20);
 
 2096                pm_buffer_append_byte(output_buffer, 
' ');
 
 2098                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2103        case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
 
 2105            pm_buffer_append_string(output_buffer, 
"@ ClassVariableOrWriteNode (location: ", 38);
 
 2106            prettyprint_location(output_buffer, parser, &node->
location);
 
 2107            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2111                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2112                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2113                pm_buffer_append_byte(output_buffer, 
' ');
 
 2114                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2115                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2120                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2121                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2123                pm_buffer_append_byte(output_buffer, 
' ');
 
 2124                prettyprint_location(output_buffer, parser, location);
 
 2125                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2126                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2127                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2132                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2133                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2135                pm_buffer_append_byte(output_buffer, 
' ');
 
 2136                prettyprint_location(output_buffer, parser, location);
 
 2137                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2138                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2139                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2144                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2145                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2146                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2148                size_t prefix_length = prefix_buffer->
length;
 
 2149                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 2150                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2151                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2152                prefix_buffer->
length = prefix_length;
 
 2157        case PM_CLASS_VARIABLE_READ_NODE: {
 
 2159            pm_buffer_append_string(output_buffer, 
"@ ClassVariableReadNode (location: ", 35);
 
 2160            prettyprint_location(output_buffer, parser, &node->
location);
 
 2161            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2165                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2166                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2167                pm_buffer_append_byte(output_buffer, 
' ');
 
 2168                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2169                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2174        case PM_CLASS_VARIABLE_TARGET_NODE: {
 
 2176            pm_buffer_append_string(output_buffer, 
"@ ClassVariableTargetNode (location: ", 37);
 
 2177            prettyprint_location(output_buffer, parser, &node->
location);
 
 2178            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2182                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2183                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2184                pm_buffer_append_byte(output_buffer, 
' ');
 
 2185                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2186                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2191        case PM_CLASS_VARIABLE_WRITE_NODE: {
 
 2193            pm_buffer_append_string(output_buffer, 
"@ ClassVariableWriteNode (location: ", 36);
 
 2194            prettyprint_location(output_buffer, parser, &node->
location);
 
 2195            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2199                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2200                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2201                pm_buffer_append_byte(output_buffer, 
' ');
 
 2202                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2203                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2208                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2209                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2211                pm_buffer_append_byte(output_buffer, 
' ');
 
 2212                prettyprint_location(output_buffer, parser, location);
 
 2213                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2214                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2215                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2220                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2221                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2222                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2224                size_t prefix_length = prefix_buffer->
length;
 
 2225                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2226                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2227                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2228                prefix_buffer->
length = prefix_length;
 
 2233                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2234                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2236                pm_buffer_append_byte(output_buffer, 
' ');
 
 2237                prettyprint_location(output_buffer, parser, location);
 
 2238                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2239                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2240                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2245        case PM_CONSTANT_AND_WRITE_NODE: {
 
 2247            pm_buffer_append_string(output_buffer, 
"@ ConstantAndWriteNode (location: ", 34);
 
 2248            prettyprint_location(output_buffer, parser, &node->
location);
 
 2249            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2253                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2254                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2255                pm_buffer_append_byte(output_buffer, 
' ');
 
 2256                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2257                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2262                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2263                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2265                pm_buffer_append_byte(output_buffer, 
' ');
 
 2266                prettyprint_location(output_buffer, parser, location);
 
 2267                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2268                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2269                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2274                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2275                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2277                pm_buffer_append_byte(output_buffer, 
' ');
 
 2278                prettyprint_location(output_buffer, parser, location);
 
 2279                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2280                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2281                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2286                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2287                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2288                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2290                size_t prefix_length = prefix_buffer->
length;
 
 2291                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 2292                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2293                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2294                prefix_buffer->
length = prefix_length;
 
 2299        case PM_CONSTANT_OPERATOR_WRITE_NODE: {
 
 2301            pm_buffer_append_string(output_buffer, 
"@ ConstantOperatorWriteNode (location: ", 39);
 
 2302            prettyprint_location(output_buffer, parser, &node->
location);
 
 2303            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2307                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2308                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2309                pm_buffer_append_byte(output_buffer, 
' ');
 
 2310                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2311                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2316                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2317                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2319                pm_buffer_append_byte(output_buffer, 
' ');
 
 2320                prettyprint_location(output_buffer, parser, location);
 
 2321                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2322                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2323                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2328                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2329                pm_buffer_append_string(output_buffer, 
"+-- binary_operator_loc:", 24);
 
 2331                pm_buffer_append_byte(output_buffer, 
' ');
 
 2332                prettyprint_location(output_buffer, parser, location);
 
 2333                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2334                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2335                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2340                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2341                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2342                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2344                size_t prefix_length = prefix_buffer->
length;
 
 2345                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2346                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2347                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2348                prefix_buffer->
length = prefix_length;
 
 2353                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2354                pm_buffer_append_string(output_buffer, 
"+-- binary_operator:", 20);
 
 2355                pm_buffer_append_byte(output_buffer, 
' ');
 
 2357                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2362        case PM_CONSTANT_OR_WRITE_NODE: {
 
 2364            pm_buffer_append_string(output_buffer, 
"@ ConstantOrWriteNode (location: ", 33);
 
 2365            prettyprint_location(output_buffer, parser, &node->
location);
 
 2366            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2370                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2371                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2372                pm_buffer_append_byte(output_buffer, 
' ');
 
 2373                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2374                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2379                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2380                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2382                pm_buffer_append_byte(output_buffer, 
' ');
 
 2383                prettyprint_location(output_buffer, parser, location);
 
 2384                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2385                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2386                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2391                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2392                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2394                pm_buffer_append_byte(output_buffer, 
' ');
 
 2395                prettyprint_location(output_buffer, parser, location);
 
 2396                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2397                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2398                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2403                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2404                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2405                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2407                size_t prefix_length = prefix_buffer->
length;
 
 2408                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 2409                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2410                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2411                prefix_buffer->
length = prefix_length;
 
 2416        case PM_CONSTANT_PATH_AND_WRITE_NODE: {
 
 2418            pm_buffer_append_string(output_buffer, 
"@ ConstantPathAndWriteNode (location: ", 38);
 
 2419            prettyprint_location(output_buffer, parser, &node->
location);
 
 2420            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2424                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2425                pm_buffer_append_string(output_buffer, 
"+-- target:", 11);
 
 2426                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2428                size_t prefix_length = prefix_buffer->
length;
 
 2429                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2430                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2431                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
 
 2432                prefix_buffer->
length = prefix_length;
 
 2437                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2438                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2440                pm_buffer_append_byte(output_buffer, 
' ');
 
 2441                prettyprint_location(output_buffer, parser, location);
 
 2442                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2443                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2444                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2449                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2450                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2451                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2453                size_t prefix_length = prefix_buffer->
length;
 
 2454                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 2455                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2456                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2457                prefix_buffer->
length = prefix_length;
 
 2462        case PM_CONSTANT_PATH_NODE: {
 
 2464            pm_buffer_append_string(output_buffer, 
"@ ConstantPathNode (location: ", 30);
 
 2465            prettyprint_location(output_buffer, parser, &node->
location);
 
 2466            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2470                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2471                pm_buffer_append_string(output_buffer, 
"+-- parent:", 11);
 
 2472                if (cast->
parent == NULL) {
 
 2473                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2475                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 2477                    size_t prefix_length = prefix_buffer->
length;
 
 2478                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2479                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 2480                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parent, prefix_buffer);
 
 2481                    prefix_buffer->
length = prefix_length;
 
 2487                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2488                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2489                if (cast->
name == 0) {
 
 2490                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2492                    pm_buffer_append_byte(output_buffer, 
' ');
 
 2493                    prettyprint_constant(output_buffer, parser, cast->
name);
 
 2494                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 2500                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2501                pm_buffer_append_string(output_buffer, 
"+-- delimiter_loc:", 18);
 
 2503                pm_buffer_append_byte(output_buffer, 
' ');
 
 2504                prettyprint_location(output_buffer, parser, location);
 
 2505                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2506                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2507                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2512                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2513                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2515                pm_buffer_append_byte(output_buffer, 
' ');
 
 2516                prettyprint_location(output_buffer, parser, location);
 
 2517                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2518                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2519                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2524        case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
 
 2526            pm_buffer_append_string(output_buffer, 
"@ ConstantPathOperatorWriteNode (location: ", 43);
 
 2527            prettyprint_location(output_buffer, parser, &node->
location);
 
 2528            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2532                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2533                pm_buffer_append_string(output_buffer, 
"+-- target:", 11);
 
 2534                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2536                size_t prefix_length = prefix_buffer->
length;
 
 2537                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2538                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2539                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
 
 2540                prefix_buffer->
length = prefix_length;
 
 2545                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2546                pm_buffer_append_string(output_buffer, 
"+-- binary_operator_loc:", 24);
 
 2548                pm_buffer_append_byte(output_buffer, 
' ');
 
 2549                prettyprint_location(output_buffer, parser, location);
 
 2550                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2551                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2552                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2557                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2558                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2559                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2561                size_t prefix_length = prefix_buffer->
length;
 
 2562                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2563                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2564                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2565                prefix_buffer->
length = prefix_length;
 
 2570                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2571                pm_buffer_append_string(output_buffer, 
"+-- binary_operator:", 20);
 
 2572                pm_buffer_append_byte(output_buffer, 
' ');
 
 2574                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2579        case PM_CONSTANT_PATH_OR_WRITE_NODE: {
 
 2581            pm_buffer_append_string(output_buffer, 
"@ ConstantPathOrWriteNode (location: ", 37);
 
 2582            prettyprint_location(output_buffer, parser, &node->
location);
 
 2583            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2587                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2588                pm_buffer_append_string(output_buffer, 
"+-- target:", 11);
 
 2589                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2591                size_t prefix_length = prefix_buffer->
length;
 
 2592                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2593                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2594                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
 
 2595                prefix_buffer->
length = prefix_length;
 
 2600                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2601                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2603                pm_buffer_append_byte(output_buffer, 
' ');
 
 2604                prettyprint_location(output_buffer, parser, location);
 
 2605                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2606                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2607                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2612                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2613                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2614                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2616                size_t prefix_length = prefix_buffer->
length;
 
 2617                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 2618                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2619                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2620                prefix_buffer->
length = prefix_length;
 
 2625        case PM_CONSTANT_PATH_TARGET_NODE: {
 
 2627            pm_buffer_append_string(output_buffer, 
"@ ConstantPathTargetNode (location: ", 36);
 
 2628            prettyprint_location(output_buffer, parser, &node->
location);
 
 2629            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2633                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2634                pm_buffer_append_string(output_buffer, 
"+-- parent:", 11);
 
 2635                if (cast->
parent == NULL) {
 
 2636                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2638                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 2640                    size_t prefix_length = prefix_buffer->
length;
 
 2641                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2642                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 2643                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parent, prefix_buffer);
 
 2644                    prefix_buffer->
length = prefix_length;
 
 2650                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2651                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2652                if (cast->
name == 0) {
 
 2653                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2655                    pm_buffer_append_byte(output_buffer, 
' ');
 
 2656                    prettyprint_constant(output_buffer, parser, cast->
name);
 
 2657                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 2663                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2664                pm_buffer_append_string(output_buffer, 
"+-- delimiter_loc:", 18);
 
 2666                pm_buffer_append_byte(output_buffer, 
' ');
 
 2667                prettyprint_location(output_buffer, parser, location);
 
 2668                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2669                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2670                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2675                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2676                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2678                pm_buffer_append_byte(output_buffer, 
' ');
 
 2679                prettyprint_location(output_buffer, parser, location);
 
 2680                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2681                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2682                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2687        case PM_CONSTANT_PATH_WRITE_NODE: {
 
 2689            pm_buffer_append_string(output_buffer, 
"@ ConstantPathWriteNode (location: ", 35);
 
 2690            prettyprint_location(output_buffer, parser, &node->
location);
 
 2691            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2695                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2696                pm_buffer_append_string(output_buffer, 
"+-- target:", 11);
 
 2697                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2699                size_t prefix_length = prefix_buffer->
length;
 
 2700                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2701                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2702                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
 
 2703                prefix_buffer->
length = prefix_length;
 
 2708                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2709                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2711                pm_buffer_append_byte(output_buffer, 
' ');
 
 2712                prettyprint_location(output_buffer, parser, location);
 
 2713                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2714                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2715                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2720                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2721                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2722                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2724                size_t prefix_length = prefix_buffer->
length;
 
 2725                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 2726                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2727                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2728                prefix_buffer->
length = prefix_length;
 
 2733        case PM_CONSTANT_READ_NODE: {
 
 2735            pm_buffer_append_string(output_buffer, 
"@ ConstantReadNode (location: ", 30);
 
 2736            prettyprint_location(output_buffer, parser, &node->
location);
 
 2737            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2741                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2742                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2743                pm_buffer_append_byte(output_buffer, 
' ');
 
 2744                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2745                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2750        case PM_CONSTANT_TARGET_NODE: {
 
 2752            pm_buffer_append_string(output_buffer, 
"@ ConstantTargetNode (location: ", 32);
 
 2753            prettyprint_location(output_buffer, parser, &node->
location);
 
 2754            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2758                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2759                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2760                pm_buffer_append_byte(output_buffer, 
' ');
 
 2761                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2762                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2767        case PM_CONSTANT_WRITE_NODE: {
 
 2769            pm_buffer_append_string(output_buffer, 
"@ ConstantWriteNode (location: ", 31);
 
 2770            prettyprint_location(output_buffer, parser, &node->
location);
 
 2771            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2775                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2776                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2777                pm_buffer_append_byte(output_buffer, 
' ');
 
 2778                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2779                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2784                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2785                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2787                pm_buffer_append_byte(output_buffer, 
' ');
 
 2788                prettyprint_location(output_buffer, parser, location);
 
 2789                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2790                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2791                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2796                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2797                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 2798                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2800                size_t prefix_length = prefix_buffer->
length;
 
 2801                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2802                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2803                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 2804                prefix_buffer->
length = prefix_length;
 
 2809                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2810                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2812                pm_buffer_append_byte(output_buffer, 
' ');
 
 2813                prettyprint_location(output_buffer, parser, location);
 
 2814                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2815                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2816                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2823            pm_buffer_append_string(output_buffer, 
"@ DefNode (location: ", 21);
 
 2824            prettyprint_location(output_buffer, parser, &node->
location);
 
 2825            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 2829                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2830                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 2831                pm_buffer_append_byte(output_buffer, 
' ');
 
 2832                prettyprint_constant(output_buffer, parser, cast->
name);
 
 2833                pm_buffer_append_byte(output_buffer, 
'\n');
 
 2838                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2839                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 2841                pm_buffer_append_byte(output_buffer, 
' ');
 
 2842                prettyprint_location(output_buffer, parser, location);
 
 2843                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2844                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2845                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2850                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2851                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 2853                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2855                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 2857                    size_t prefix_length = prefix_buffer->
length;
 
 2858                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2859                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 2860                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 2861                    prefix_buffer->
length = prefix_length;
 
 2867                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2868                pm_buffer_append_string(output_buffer, 
"+-- parameters:", 15);
 
 2870                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2872                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 2874                    size_t prefix_length = prefix_buffer->
length;
 
 2875                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2876                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 2878                    prefix_buffer->
length = prefix_length;
 
 2884                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2885                pm_buffer_append_string(output_buffer, 
"+-- body:", 9);
 
 2886                if (cast->
body == NULL) {
 
 2887                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2889                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 2891                    size_t prefix_length = prefix_buffer->
length;
 
 2892                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 2893                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 2894                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
 
 2895                    prefix_buffer->
length = prefix_length;
 
 2901                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2902                pm_buffer_append_string(output_buffer, 
"+-- locals:", 11);
 
 2903                pm_buffer_append_string(output_buffer, 
" [", 2);
 
 2904                for (uint32_t index = 0; index < cast->
locals.
size; index++) {
 
 2905                    if (index != 0) pm_buffer_append_string(output_buffer, 
", ", 2);
 
 2906                    prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
 
 2908                pm_buffer_append_string(output_buffer, 
"]\n", 2);
 
 2913                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2914                pm_buffer_append_string(output_buffer, 
"+-- def_keyword_loc:", 20);
 
 2916                pm_buffer_append_byte(output_buffer, 
' ');
 
 2917                prettyprint_location(output_buffer, parser, location);
 
 2918                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2919                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2920                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2925                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2926                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 2928                if (location->
start == NULL) {
 
 2929                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2931                    pm_buffer_append_byte(output_buffer, 
' ');
 
 2932                    prettyprint_location(output_buffer, parser, location);
 
 2933                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2934                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2935                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2941                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2942                pm_buffer_append_string(output_buffer, 
"+-- lparen_loc:", 15);
 
 2944                if (location->
start == NULL) {
 
 2945                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2947                    pm_buffer_append_byte(output_buffer, 
' ');
 
 2948                    prettyprint_location(output_buffer, parser, location);
 
 2949                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2950                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2951                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2957                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2958                pm_buffer_append_string(output_buffer, 
"+-- rparen_loc:", 15);
 
 2960                if (location->
start == NULL) {
 
 2961                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2963                    pm_buffer_append_byte(output_buffer, 
' ');
 
 2964                    prettyprint_location(output_buffer, parser, location);
 
 2965                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2966                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2967                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2973                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2974                pm_buffer_append_string(output_buffer, 
"+-- equal_loc:", 14);
 
 2976                if (location->
start == NULL) {
 
 2977                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2979                    pm_buffer_append_byte(output_buffer, 
' ');
 
 2980                    prettyprint_location(output_buffer, parser, location);
 
 2981                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2982                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2983                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 2989                pm_buffer_concat(output_buffer, prefix_buffer);
 
 2990                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 2992                if (location->
start == NULL) {
 
 2993                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 2995                    pm_buffer_append_byte(output_buffer, 
' ');
 
 2996                    prettyprint_location(output_buffer, parser, location);
 
 2997                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 2998                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 2999                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3005        case PM_DEFINED_NODE: {
 
 3007            pm_buffer_append_string(output_buffer, 
"@ DefinedNode (location: ", 25);
 
 3008            prettyprint_location(output_buffer, parser, &node->
location);
 
 3009            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3013                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3014                pm_buffer_append_string(output_buffer, 
"+-- lparen_loc:", 15);
 
 3016                if (location->
start == NULL) {
 
 3017                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3019                    pm_buffer_append_byte(output_buffer, 
' ');
 
 3020                    prettyprint_location(output_buffer, parser, location);
 
 3021                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3022                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3023                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3029                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3030                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 3031                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3033                size_t prefix_length = prefix_buffer->
length;
 
 3034                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3035                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3036                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 3037                prefix_buffer->
length = prefix_length;
 
 3042                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3043                pm_buffer_append_string(output_buffer, 
"+-- rparen_loc:", 15);
 
 3045                if (location->
start == NULL) {
 
 3046                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3048                    pm_buffer_append_byte(output_buffer, 
' ');
 
 3049                    prettyprint_location(output_buffer, parser, location);
 
 3050                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3051                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3052                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3058                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3059                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 3061                pm_buffer_append_byte(output_buffer, 
' ');
 
 3062                prettyprint_location(output_buffer, parser, location);
 
 3063                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3064                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3065                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3070        case PM_ELSE_NODE: {
 
 3072            pm_buffer_append_string(output_buffer, 
"@ ElseNode (location: ", 22);
 
 3073            prettyprint_location(output_buffer, parser, &node->
location);
 
 3074            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3078                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3079                pm_buffer_append_string(output_buffer, 
"+-- else_keyword_loc:", 21);
 
 3081                pm_buffer_append_byte(output_buffer, 
' ');
 
 3082                prettyprint_location(output_buffer, parser, location);
 
 3083                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3084                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3085                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3090                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3091                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 3093                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3095                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3097                    size_t prefix_length = prefix_buffer->
length;
 
 3098                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3099                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3101                    prefix_buffer->
length = prefix_length;
 
 3107                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3108                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 3110                if (location->
start == NULL) {
 
 3111                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3113                    pm_buffer_append_byte(output_buffer, 
' ');
 
 3114                    prettyprint_location(output_buffer, parser, location);
 
 3115                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3116                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3117                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3123        case PM_EMBEDDED_STATEMENTS_NODE: {
 
 3125            pm_buffer_append_string(output_buffer, 
"@ EmbeddedStatementsNode (location: ", 36);
 
 3126            prettyprint_location(output_buffer, parser, &node->
location);
 
 3127            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3131                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3132                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 3134                pm_buffer_append_byte(output_buffer, 
' ');
 
 3135                prettyprint_location(output_buffer, parser, location);
 
 3136                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3137                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3138                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3143                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3144                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 3146                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3148                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3150                    size_t prefix_length = prefix_buffer->
length;
 
 3151                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3152                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3154                    prefix_buffer->
length = prefix_length;
 
 3160                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3161                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 3163                pm_buffer_append_byte(output_buffer, 
' ');
 
 3164                prettyprint_location(output_buffer, parser, location);
 
 3165                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3166                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3167                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3172        case PM_EMBEDDED_VARIABLE_NODE: {
 
 3174            pm_buffer_append_string(output_buffer, 
"@ EmbeddedVariableNode (location: ", 34);
 
 3175            prettyprint_location(output_buffer, parser, &node->
location);
 
 3176            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3180                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3181                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 3183                pm_buffer_append_byte(output_buffer, 
' ');
 
 3184                prettyprint_location(output_buffer, parser, location);
 
 3185                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3186                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3187                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3192                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3193                pm_buffer_append_string(output_buffer, 
"+-- variable:", 13);
 
 3194                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3196                size_t prefix_length = prefix_buffer->
length;
 
 3197                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 3198                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3199                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
variable, prefix_buffer);
 
 3200                prefix_buffer->
length = prefix_length;
 
 3205        case PM_ENSURE_NODE: {
 
 3207            pm_buffer_append_string(output_buffer, 
"@ EnsureNode (location: ", 24);
 
 3208            prettyprint_location(output_buffer, parser, &node->
location);
 
 3209            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3213                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3214                pm_buffer_append_string(output_buffer, 
"+-- ensure_keyword_loc:", 23);
 
 3216                pm_buffer_append_byte(output_buffer, 
' ');
 
 3217                prettyprint_location(output_buffer, parser, location);
 
 3218                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3219                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3220                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3225                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3226                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 3228                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3230                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3232                    size_t prefix_length = prefix_buffer->
length;
 
 3233                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3234                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3236                    prefix_buffer->
length = prefix_length;
 
 3242                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3243                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 3245                pm_buffer_append_byte(output_buffer, 
' ');
 
 3246                prettyprint_location(output_buffer, parser, location);
 
 3247                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3248                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3249                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3254        case PM_FALSE_NODE: {
 
 3255            pm_buffer_append_string(output_buffer, 
"@ FalseNode (location: ", 23);
 
 3256            prettyprint_location(output_buffer, parser, &node->
location);
 
 3257            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3261        case PM_FIND_PATTERN_NODE: {
 
 3263            pm_buffer_append_string(output_buffer, 
"@ FindPatternNode (location: ", 29);
 
 3264            prettyprint_location(output_buffer, parser, &node->
location);
 
 3265            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3269                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3270                pm_buffer_append_string(output_buffer, 
"+-- constant:", 13);
 
 3272                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3274                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3276                    size_t prefix_length = prefix_buffer->
length;
 
 3277                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3278                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3279                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
constant, prefix_buffer);
 
 3280                    prefix_buffer->
length = prefix_length;
 
 3286                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3287                pm_buffer_append_string(output_buffer, 
"+-- left:", 9);
 
 3288                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3290                size_t prefix_length = prefix_buffer->
length;
 
 3291                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3292                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3293                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
 
 3294                prefix_buffer->
length = prefix_length;
 
 3299                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3300                pm_buffer_append_string(output_buffer, 
"+-- requireds:", 14);
 
 3301                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
requireds.
size));
 
 3304                for (uint32_t index = 0; index < last_index; index++) {
 
 3305                    size_t prefix_length = prefix_buffer->
length;
 
 3306                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3307                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3308                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 3309                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 3311                    prefix_buffer->
length = prefix_length;
 
 3317                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3318                pm_buffer_append_string(output_buffer, 
"+-- right:", 10);
 
 3319                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3321                size_t prefix_length = prefix_buffer->
length;
 
 3322                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3323                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3324                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
 
 3325                prefix_buffer->
length = prefix_length;
 
 3330                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3331                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 3333                if (location->
start == NULL) {
 
 3334                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3336                    pm_buffer_append_byte(output_buffer, 
' ');
 
 3337                    prettyprint_location(output_buffer, parser, location);
 
 3338                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3339                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3340                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3346                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3347                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 3349                if (location->
start == NULL) {
 
 3350                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3352                    pm_buffer_append_byte(output_buffer, 
' ');
 
 3353                    prettyprint_location(output_buffer, parser, location);
 
 3354                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3355                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3356                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3362        case PM_FLIP_FLOP_NODE: {
 
 3364            pm_buffer_append_string(output_buffer, 
"@ FlipFlopNode (location: ", 26);
 
 3365            prettyprint_location(output_buffer, parser, &node->
location);
 
 3366            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3370                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3371                pm_buffer_append_string(output_buffer, 
"+-- RangeFlags:", 15);
 
 3373                if (cast->
base.
flags & PM_RANGE_FLAGS_EXCLUDE_END) {
 
 3374                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 3375                    pm_buffer_append_string(output_buffer, 
" exclude_end", 12);
 
 3378                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 3379                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3384                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3385                pm_buffer_append_string(output_buffer, 
"+-- left:", 9);
 
 3386                if (cast->
left == NULL) {
 
 3387                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3389                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3391                    size_t prefix_length = prefix_buffer->
length;
 
 3392                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3393                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3394                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
 
 3395                    prefix_buffer->
length = prefix_length;
 
 3401                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3402                pm_buffer_append_string(output_buffer, 
"+-- right:", 10);
 
 3403                if (cast->
right == NULL) {
 
 3404                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3406                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3408                    size_t prefix_length = prefix_buffer->
length;
 
 3409                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3410                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3411                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
 
 3412                    prefix_buffer->
length = prefix_length;
 
 3418                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3419                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 3421                pm_buffer_append_byte(output_buffer, 
' ');
 
 3422                prettyprint_location(output_buffer, parser, location);
 
 3423                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3424                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3425                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3430        case PM_FLOAT_NODE: {
 
 3432            pm_buffer_append_string(output_buffer, 
"@ FloatNode (location: ", 23);
 
 3433            prettyprint_location(output_buffer, parser, &node->
location);
 
 3434            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3438                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3439                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 3440                pm_buffer_append_format(output_buffer, 
" %f\n", cast->
value);
 
 3447            pm_buffer_append_string(output_buffer, 
"@ ForNode (location: ", 21);
 
 3448            prettyprint_location(output_buffer, parser, &node->
location);
 
 3449            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3453                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3454                pm_buffer_append_string(output_buffer, 
"+-- index:", 10);
 
 3455                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3457                size_t prefix_length = prefix_buffer->
length;
 
 3458                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3459                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3460                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
index, prefix_buffer);
 
 3461                prefix_buffer->
length = prefix_length;
 
 3466                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3467                pm_buffer_append_string(output_buffer, 
"+-- collection:", 15);
 
 3468                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3470                size_t prefix_length = prefix_buffer->
length;
 
 3471                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3472                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3474                prefix_buffer->
length = prefix_length;
 
 3479                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3480                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 3482                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3484                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3486                    size_t prefix_length = prefix_buffer->
length;
 
 3487                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3488                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3490                    prefix_buffer->
length = prefix_length;
 
 3496                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3497                pm_buffer_append_string(output_buffer, 
"+-- for_keyword_loc:", 20);
 
 3499                pm_buffer_append_byte(output_buffer, 
' ');
 
 3500                prettyprint_location(output_buffer, parser, location);
 
 3501                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3502                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3503                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3508                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3509                pm_buffer_append_string(output_buffer, 
"+-- in_keyword_loc:", 19);
 
 3511                pm_buffer_append_byte(output_buffer, 
' ');
 
 3512                prettyprint_location(output_buffer, parser, location);
 
 3513                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3514                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3515                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3520                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3521                pm_buffer_append_string(output_buffer, 
"+-- do_keyword_loc:", 19);
 
 3523                if (location->
start == NULL) {
 
 3524                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3526                    pm_buffer_append_byte(output_buffer, 
' ');
 
 3527                    prettyprint_location(output_buffer, parser, location);
 
 3528                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3529                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3530                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3536                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3537                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 3539                pm_buffer_append_byte(output_buffer, 
' ');
 
 3540                prettyprint_location(output_buffer, parser, location);
 
 3541                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3542                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3543                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3548        case PM_FORWARDING_ARGUMENTS_NODE: {
 
 3549            pm_buffer_append_string(output_buffer, 
"@ ForwardingArgumentsNode (location: ", 37);
 
 3550            prettyprint_location(output_buffer, parser, &node->
location);
 
 3551            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3555        case PM_FORWARDING_PARAMETER_NODE: {
 
 3556            pm_buffer_append_string(output_buffer, 
"@ ForwardingParameterNode (location: ", 37);
 
 3557            prettyprint_location(output_buffer, parser, &node->
location);
 
 3558            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3562        case PM_FORWARDING_SUPER_NODE: {
 
 3564            pm_buffer_append_string(output_buffer, 
"@ ForwardingSuperNode (location: ", 33);
 
 3565            prettyprint_location(output_buffer, parser, &node->
location);
 
 3566            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3570                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3571                pm_buffer_append_string(output_buffer, 
"+-- block:", 10);
 
 3572                if (cast->
block == NULL) {
 
 3573                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3575                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3577                    size_t prefix_length = prefix_buffer->
length;
 
 3578                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 3579                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3580                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
 
 3581                    prefix_buffer->
length = prefix_length;
 
 3587        case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
 
 3589            pm_buffer_append_string(output_buffer, 
"@ GlobalVariableAndWriteNode (location: ", 40);
 
 3590            prettyprint_location(output_buffer, parser, &node->
location);
 
 3591            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3595                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3596                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 3597                pm_buffer_append_byte(output_buffer, 
' ');
 
 3598                prettyprint_constant(output_buffer, parser, cast->
name);
 
 3599                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3604                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3605                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 3607                pm_buffer_append_byte(output_buffer, 
' ');
 
 3608                prettyprint_location(output_buffer, parser, location);
 
 3609                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3610                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3611                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3616                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3617                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 3619                pm_buffer_append_byte(output_buffer, 
' ');
 
 3620                prettyprint_location(output_buffer, parser, location);
 
 3621                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3622                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3623                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3628                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3629                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 3630                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3632                size_t prefix_length = prefix_buffer->
length;
 
 3633                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 3634                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3635                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 3636                prefix_buffer->
length = prefix_length;
 
 3641        case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
 
 3643            pm_buffer_append_string(output_buffer, 
"@ GlobalVariableOperatorWriteNode (location: ", 45);
 
 3644            prettyprint_location(output_buffer, parser, &node->
location);
 
 3645            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3649                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3650                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 3651                pm_buffer_append_byte(output_buffer, 
' ');
 
 3652                prettyprint_constant(output_buffer, parser, cast->
name);
 
 3653                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3658                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3659                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 3661                pm_buffer_append_byte(output_buffer, 
' ');
 
 3662                prettyprint_location(output_buffer, parser, location);
 
 3663                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3664                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3665                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3670                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3671                pm_buffer_append_string(output_buffer, 
"+-- binary_operator_loc:", 24);
 
 3673                pm_buffer_append_byte(output_buffer, 
' ');
 
 3674                prettyprint_location(output_buffer, parser, location);
 
 3675                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3676                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3677                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3682                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3683                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 3684                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3686                size_t prefix_length = prefix_buffer->
length;
 
 3687                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3688                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3689                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 3690                prefix_buffer->
length = prefix_length;
 
 3695                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3696                pm_buffer_append_string(output_buffer, 
"+-- binary_operator:", 20);
 
 3697                pm_buffer_append_byte(output_buffer, 
' ');
 
 3699                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3704        case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
 
 3706            pm_buffer_append_string(output_buffer, 
"@ GlobalVariableOrWriteNode (location: ", 39);
 
 3707            prettyprint_location(output_buffer, parser, &node->
location);
 
 3708            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3712                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3713                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 3714                pm_buffer_append_byte(output_buffer, 
' ');
 
 3715                prettyprint_constant(output_buffer, parser, cast->
name);
 
 3716                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3721                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3722                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 3724                pm_buffer_append_byte(output_buffer, 
' ');
 
 3725                prettyprint_location(output_buffer, parser, location);
 
 3726                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3727                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3728                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3733                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3734                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 3736                pm_buffer_append_byte(output_buffer, 
' ');
 
 3737                prettyprint_location(output_buffer, parser, location);
 
 3738                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3739                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3740                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3745                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3746                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 3747                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3749                size_t prefix_length = prefix_buffer->
length;
 
 3750                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 3751                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3752                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 3753                prefix_buffer->
length = prefix_length;
 
 3758        case PM_GLOBAL_VARIABLE_READ_NODE: {
 
 3760            pm_buffer_append_string(output_buffer, 
"@ GlobalVariableReadNode (location: ", 36);
 
 3761            prettyprint_location(output_buffer, parser, &node->
location);
 
 3762            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3766                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3767                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 3768                pm_buffer_append_byte(output_buffer, 
' ');
 
 3769                prettyprint_constant(output_buffer, parser, cast->
name);
 
 3770                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3775        case PM_GLOBAL_VARIABLE_TARGET_NODE: {
 
 3777            pm_buffer_append_string(output_buffer, 
"@ GlobalVariableTargetNode (location: ", 38);
 
 3778            prettyprint_location(output_buffer, parser, &node->
location);
 
 3779            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3783                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3784                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 3785                pm_buffer_append_byte(output_buffer, 
' ');
 
 3786                prettyprint_constant(output_buffer, parser, cast->
name);
 
 3787                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3792        case PM_GLOBAL_VARIABLE_WRITE_NODE: {
 
 3794            pm_buffer_append_string(output_buffer, 
"@ GlobalVariableWriteNode (location: ", 37);
 
 3795            prettyprint_location(output_buffer, parser, &node->
location);
 
 3796            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3800                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3801                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 3802                pm_buffer_append_byte(output_buffer, 
' ');
 
 3803                prettyprint_constant(output_buffer, parser, cast->
name);
 
 3804                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3809                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3810                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 3812                pm_buffer_append_byte(output_buffer, 
' ');
 
 3813                prettyprint_location(output_buffer, parser, location);
 
 3814                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3815                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3816                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3821                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3822                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 3823                pm_buffer_append_byte(output_buffer, 
'\n');
 
 3825                size_t prefix_length = prefix_buffer->
length;
 
 3826                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3827                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3828                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 3829                prefix_buffer->
length = prefix_length;
 
 3834                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3835                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 3837                pm_buffer_append_byte(output_buffer, 
' ');
 
 3838                prettyprint_location(output_buffer, parser, location);
 
 3839                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3840                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3841                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3846        case PM_HASH_NODE: {
 
 3848            pm_buffer_append_string(output_buffer, 
"@ HashNode (location: ", 22);
 
 3849            prettyprint_location(output_buffer, parser, &node->
location);
 
 3850            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3854                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3855                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 3857                pm_buffer_append_byte(output_buffer, 
' ');
 
 3858                prettyprint_location(output_buffer, parser, location);
 
 3859                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3860                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3861                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3866                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3867                pm_buffer_append_string(output_buffer, 
"+-- elements:", 13);
 
 3868                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
elements.
size));
 
 3871                for (uint32_t index = 0; index < last_index; index++) {
 
 3872                    size_t prefix_length = prefix_buffer->
length;
 
 3873                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3874                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3875                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 3876                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 3878                    prefix_buffer->
length = prefix_length;
 
 3884                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3885                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 3887                pm_buffer_append_byte(output_buffer, 
' ');
 
 3888                prettyprint_location(output_buffer, parser, location);
 
 3889                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3890                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3891                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3896        case PM_HASH_PATTERN_NODE: {
 
 3898            pm_buffer_append_string(output_buffer, 
"@ HashPatternNode (location: ", 29);
 
 3899            prettyprint_location(output_buffer, parser, &node->
location);
 
 3900            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3904                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3905                pm_buffer_append_string(output_buffer, 
"+-- constant:", 13);
 
 3907                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3909                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3911                    size_t prefix_length = prefix_buffer->
length;
 
 3912                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3913                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3914                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
constant, prefix_buffer);
 
 3915                    prefix_buffer->
length = prefix_length;
 
 3921                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3922                pm_buffer_append_string(output_buffer, 
"+-- elements:", 13);
 
 3923                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
elements.
size));
 
 3926                for (uint32_t index = 0; index < last_index; index++) {
 
 3927                    size_t prefix_length = prefix_buffer->
length;
 
 3928                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3929                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3930                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 3931                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 3933                    prefix_buffer->
length = prefix_length;
 
 3939                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3940                pm_buffer_append_string(output_buffer, 
"+-- rest:", 9);
 
 3941                if (cast->
rest == NULL) {
 
 3942                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3944                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 3946                    size_t prefix_length = prefix_buffer->
length;
 
 3947                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 3948                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 3949                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
 
 3950                    prefix_buffer->
length = prefix_length;
 
 3956                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3957                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 3959                if (location->
start == NULL) {
 
 3960                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3962                    pm_buffer_append_byte(output_buffer, 
' ');
 
 3963                    prettyprint_location(output_buffer, parser, location);
 
 3964                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3965                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3966                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3972                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3973                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 3975                if (location->
start == NULL) {
 
 3976                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 3978                    pm_buffer_append_byte(output_buffer, 
' ');
 
 3979                    prettyprint_location(output_buffer, parser, location);
 
 3980                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 3981                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 3982                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 3990            pm_buffer_append_string(output_buffer, 
"@ IfNode (location: ", 20);
 
 3991            prettyprint_location(output_buffer, parser, &node->
location);
 
 3992            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 3996                pm_buffer_concat(output_buffer, prefix_buffer);
 
 3997                pm_buffer_append_string(output_buffer, 
"+-- if_keyword_loc:", 19);
 
 3999                if (location->
start == NULL) {
 
 4000                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4002                    pm_buffer_append_byte(output_buffer, 
' ');
 
 4003                    prettyprint_location(output_buffer, parser, location);
 
 4004                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4005                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4006                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4012                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4013                pm_buffer_append_string(output_buffer, 
"+-- predicate:", 14);
 
 4014                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4016                size_t prefix_length = prefix_buffer->
length;
 
 4017                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4018                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4019                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
 
 4020                prefix_buffer->
length = prefix_length;
 
 4025                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4026                pm_buffer_append_string(output_buffer, 
"+-- then_keyword_loc:", 21);
 
 4028                if (location->
start == NULL) {
 
 4029                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4031                    pm_buffer_append_byte(output_buffer, 
' ');
 
 4032                    prettyprint_location(output_buffer, parser, location);
 
 4033                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4034                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4035                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4041                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4042                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 4044                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4046                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4048                    size_t prefix_length = prefix_buffer->
length;
 
 4049                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4050                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4052                    prefix_buffer->
length = prefix_length;
 
 4058                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4059                pm_buffer_append_string(output_buffer, 
"+-- subsequent:", 15);
 
 4061                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4063                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4065                    size_t prefix_length = prefix_buffer->
length;
 
 4066                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4067                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4069                    prefix_buffer->
length = prefix_length;
 
 4075                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4076                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 4078                if (location->
start == NULL) {
 
 4079                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4081                    pm_buffer_append_byte(output_buffer, 
' ');
 
 4082                    prettyprint_location(output_buffer, parser, location);
 
 4083                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4084                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4085                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4091        case PM_IMAGINARY_NODE: {
 
 4093            pm_buffer_append_string(output_buffer, 
"@ ImaginaryNode (location: ", 27);
 
 4094            prettyprint_location(output_buffer, parser, &node->
location);
 
 4095            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4099                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4100                pm_buffer_append_string(output_buffer, 
"+-- numeric:", 12);
 
 4101                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4103                size_t prefix_length = prefix_buffer->
length;
 
 4104                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 4105                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4106                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
numeric, prefix_buffer);
 
 4107                prefix_buffer->
length = prefix_length;
 
 4112        case PM_IMPLICIT_NODE: {
 
 4114            pm_buffer_append_string(output_buffer, 
"@ ImplicitNode (location: ", 26);
 
 4115            prettyprint_location(output_buffer, parser, &node->
location);
 
 4116            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4120                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4121                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 4122                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4124                size_t prefix_length = prefix_buffer->
length;
 
 4125                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 4126                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4127                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 4128                prefix_buffer->
length = prefix_length;
 
 4133        case PM_IMPLICIT_REST_NODE: {
 
 4134            pm_buffer_append_string(output_buffer, 
"@ ImplicitRestNode (location: ", 30);
 
 4135            prettyprint_location(output_buffer, parser, &node->
location);
 
 4136            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4142            pm_buffer_append_string(output_buffer, 
"@ InNode (location: ", 20);
 
 4143            prettyprint_location(output_buffer, parser, &node->
location);
 
 4144            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4148                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4149                pm_buffer_append_string(output_buffer, 
"+-- pattern:", 12);
 
 4150                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4152                size_t prefix_length = prefix_buffer->
length;
 
 4153                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4154                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4155                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
pattern, prefix_buffer);
 
 4156                prefix_buffer->
length = prefix_length;
 
 4161                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4162                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 4164                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4166                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4168                    size_t prefix_length = prefix_buffer->
length;
 
 4169                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4170                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4172                    prefix_buffer->
length = prefix_length;
 
 4178                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4179                pm_buffer_append_string(output_buffer, 
"+-- in_loc:", 11);
 
 4181                pm_buffer_append_byte(output_buffer, 
' ');
 
 4182                prettyprint_location(output_buffer, parser, location);
 
 4183                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4184                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4185                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4190                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4191                pm_buffer_append_string(output_buffer, 
"+-- then_loc:", 13);
 
 4193                if (location->
start == NULL) {
 
 4194                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4196                    pm_buffer_append_byte(output_buffer, 
' ');
 
 4197                    prettyprint_location(output_buffer, parser, location);
 
 4198                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4199                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4200                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4206        case PM_INDEX_AND_WRITE_NODE: {
 
 4208            pm_buffer_append_string(output_buffer, 
"@ IndexAndWriteNode (location: ", 31);
 
 4209            prettyprint_location(output_buffer, parser, &node->
location);
 
 4210            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4214                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4215                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 4217                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 4218                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4219                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 4222                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 4223                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4224                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 4227                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 4228                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4229                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 4232                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 4233                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4234                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 4237                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 4238                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4243                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4244                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 4246                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4248                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4250                    size_t prefix_length = prefix_buffer->
length;
 
 4251                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4252                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4253                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 4254                    prefix_buffer->
length = prefix_length;
 
 4260                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4261                pm_buffer_append_string(output_buffer, 
"+-- call_operator_loc:", 22);
 
 4263                if (location->
start == NULL) {
 
 4264                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4266                    pm_buffer_append_byte(output_buffer, 
' ');
 
 4267                    prettyprint_location(output_buffer, parser, location);
 
 4268                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4269                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4270                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4276                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4277                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 4279                pm_buffer_append_byte(output_buffer, 
' ');
 
 4280                prettyprint_location(output_buffer, parser, location);
 
 4281                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4282                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4283                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4288                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4289                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 4291                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4293                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4295                    size_t prefix_length = prefix_buffer->
length;
 
 4296                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4297                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4298                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 4299                    prefix_buffer->
length = prefix_length;
 
 4305                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4306                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 4308                pm_buffer_append_byte(output_buffer, 
' ');
 
 4309                prettyprint_location(output_buffer, parser, location);
 
 4310                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4311                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4312                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4317                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4318                pm_buffer_append_string(output_buffer, 
"+-- block:", 10);
 
 4319                if (cast->
block == NULL) {
 
 4320                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4322                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4324                    size_t prefix_length = prefix_buffer->
length;
 
 4325                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4326                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4327                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
 
 4328                    prefix_buffer->
length = prefix_length;
 
 4334                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4335                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 4337                pm_buffer_append_byte(output_buffer, 
' ');
 
 4338                prettyprint_location(output_buffer, parser, location);
 
 4339                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4340                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4341                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4346                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4347                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 4348                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4350                size_t prefix_length = prefix_buffer->
length;
 
 4351                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 4352                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4353                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 4354                prefix_buffer->
length = prefix_length;
 
 4359        case PM_INDEX_OPERATOR_WRITE_NODE: {
 
 4361            pm_buffer_append_string(output_buffer, 
"@ IndexOperatorWriteNode (location: ", 36);
 
 4362            prettyprint_location(output_buffer, parser, &node->
location);
 
 4363            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4367                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4368                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 4370                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 4371                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4372                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 4375                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 4376                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4377                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 4380                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 4381                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4382                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 4385                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 4386                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4387                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 4390                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 4391                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4396                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4397                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 4399                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4401                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4403                    size_t prefix_length = prefix_buffer->
length;
 
 4404                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4405                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4406                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 4407                    prefix_buffer->
length = prefix_length;
 
 4413                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4414                pm_buffer_append_string(output_buffer, 
"+-- call_operator_loc:", 22);
 
 4416                if (location->
start == NULL) {
 
 4417                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4419                    pm_buffer_append_byte(output_buffer, 
' ');
 
 4420                    prettyprint_location(output_buffer, parser, location);
 
 4421                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4422                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4423                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4429                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4430                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 4432                pm_buffer_append_byte(output_buffer, 
' ');
 
 4433                prettyprint_location(output_buffer, parser, location);
 
 4434                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4435                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4436                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4441                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4442                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 4444                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4446                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4448                    size_t prefix_length = prefix_buffer->
length;
 
 4449                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4450                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4451                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 4452                    prefix_buffer->
length = prefix_length;
 
 4458                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4459                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 4461                pm_buffer_append_byte(output_buffer, 
' ');
 
 4462                prettyprint_location(output_buffer, parser, location);
 
 4463                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4464                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4465                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4470                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4471                pm_buffer_append_string(output_buffer, 
"+-- block:", 10);
 
 4472                if (cast->
block == NULL) {
 
 4473                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4475                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4477                    size_t prefix_length = prefix_buffer->
length;
 
 4478                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4479                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4480                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
 
 4481                    prefix_buffer->
length = prefix_length;
 
 4487                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4488                pm_buffer_append_string(output_buffer, 
"+-- binary_operator:", 20);
 
 4489                pm_buffer_append_byte(output_buffer, 
' ');
 
 4491                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4496                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4497                pm_buffer_append_string(output_buffer, 
"+-- binary_operator_loc:", 24);
 
 4499                pm_buffer_append_byte(output_buffer, 
' ');
 
 4500                prettyprint_location(output_buffer, parser, location);
 
 4501                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4502                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4503                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4508                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4509                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 4510                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4512                size_t prefix_length = prefix_buffer->
length;
 
 4513                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 4514                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4515                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 4516                prefix_buffer->
length = prefix_length;
 
 4521        case PM_INDEX_OR_WRITE_NODE: {
 
 4523            pm_buffer_append_string(output_buffer, 
"@ IndexOrWriteNode (location: ", 30);
 
 4524            prettyprint_location(output_buffer, parser, &node->
location);
 
 4525            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4529                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4530                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 4532                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 4533                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4534                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 4537                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 4538                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4539                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 4542                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 4543                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4544                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 4547                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 4548                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4549                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 4552                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 4553                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4558                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4559                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 4561                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4563                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4565                    size_t prefix_length = prefix_buffer->
length;
 
 4566                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4567                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4568                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 4569                    prefix_buffer->
length = prefix_length;
 
 4575                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4576                pm_buffer_append_string(output_buffer, 
"+-- call_operator_loc:", 22);
 
 4578                if (location->
start == NULL) {
 
 4579                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4581                    pm_buffer_append_byte(output_buffer, 
' ');
 
 4582                    prettyprint_location(output_buffer, parser, location);
 
 4583                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4584                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4585                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4591                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4592                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 4594                pm_buffer_append_byte(output_buffer, 
' ');
 
 4595                prettyprint_location(output_buffer, parser, location);
 
 4596                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4597                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4598                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4603                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4604                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 4606                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4608                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4610                    size_t prefix_length = prefix_buffer->
length;
 
 4611                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4612                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4613                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 4614                    prefix_buffer->
length = prefix_length;
 
 4620                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4621                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 4623                pm_buffer_append_byte(output_buffer, 
' ');
 
 4624                prettyprint_location(output_buffer, parser, location);
 
 4625                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4626                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4627                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4632                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4633                pm_buffer_append_string(output_buffer, 
"+-- block:", 10);
 
 4634                if (cast->
block == NULL) {
 
 4635                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4637                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4639                    size_t prefix_length = prefix_buffer->
length;
 
 4640                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4641                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4642                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
 
 4643                    prefix_buffer->
length = prefix_length;
 
 4649                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4650                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 4652                pm_buffer_append_byte(output_buffer, 
' ');
 
 4653                prettyprint_location(output_buffer, parser, location);
 
 4654                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4655                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4656                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4661                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4662                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 4663                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4665                size_t prefix_length = prefix_buffer->
length;
 
 4666                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 4667                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4668                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 4669                prefix_buffer->
length = prefix_length;
 
 4674        case PM_INDEX_TARGET_NODE: {
 
 4676            pm_buffer_append_string(output_buffer, 
"@ IndexTargetNode (location: ", 29);
 
 4677            prettyprint_location(output_buffer, parser, &node->
location);
 
 4678            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4682                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4683                pm_buffer_append_string(output_buffer, 
"+-- CallNodeFlags:", 18);
 
 4685                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
 
 4686                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4687                    pm_buffer_append_string(output_buffer, 
" safe_navigation", 16);
 
 4690                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
 
 4691                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4692                    pm_buffer_append_string(output_buffer, 
" variable_call", 14);
 
 4695                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
 
 4696                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4697                    pm_buffer_append_string(output_buffer, 
" attribute_write", 16);
 
 4700                if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
 
 4701                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 4702                    pm_buffer_append_string(output_buffer, 
" ignore_visibility", 18);
 
 4705                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 4706                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4711                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4712                pm_buffer_append_string(output_buffer, 
"+-- receiver:", 13);
 
 4713                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4715                size_t prefix_length = prefix_buffer->
length;
 
 4716                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4717                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4718                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
 
 4719                prefix_buffer->
length = prefix_length;
 
 4724                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4725                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 4727                pm_buffer_append_byte(output_buffer, 
' ');
 
 4728                prettyprint_location(output_buffer, parser, location);
 
 4729                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4730                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4731                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4736                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4737                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 4739                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4741                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4743                    size_t prefix_length = prefix_buffer->
length;
 
 4744                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4745                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4746                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 4747                    prefix_buffer->
length = prefix_length;
 
 4753                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4754                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 4756                pm_buffer_append_byte(output_buffer, 
' ');
 
 4757                prettyprint_location(output_buffer, parser, location);
 
 4758                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4759                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4760                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4765                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4766                pm_buffer_append_string(output_buffer, 
"+-- block:", 10);
 
 4767                if (cast->
block == NULL) {
 
 4768                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 4770                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 4772                    size_t prefix_length = prefix_buffer->
length;
 
 4773                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 4774                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 4775                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
 
 4776                    prefix_buffer->
length = prefix_length;
 
 4782        case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
 
 4784            pm_buffer_append_string(output_buffer, 
"@ InstanceVariableAndWriteNode (location: ", 42);
 
 4785            prettyprint_location(output_buffer, parser, &node->
location);
 
 4786            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4790                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4791                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 4792                pm_buffer_append_byte(output_buffer, 
' ');
 
 4793                prettyprint_constant(output_buffer, parser, cast->
name);
 
 4794                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4799                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4800                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 4802                pm_buffer_append_byte(output_buffer, 
' ');
 
 4803                prettyprint_location(output_buffer, parser, location);
 
 4804                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4805                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4806                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4811                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4812                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 4814                pm_buffer_append_byte(output_buffer, 
' ');
 
 4815                prettyprint_location(output_buffer, parser, location);
 
 4816                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4817                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4818                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4823                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4824                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 4825                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4827                size_t prefix_length = prefix_buffer->
length;
 
 4828                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 4829                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4830                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 4831                prefix_buffer->
length = prefix_length;
 
 4836        case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
 
 4838            pm_buffer_append_string(output_buffer, 
"@ InstanceVariableOperatorWriteNode (location: ", 47);
 
 4839            prettyprint_location(output_buffer, parser, &node->
location);
 
 4840            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4844                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4845                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 4846                pm_buffer_append_byte(output_buffer, 
' ');
 
 4847                prettyprint_constant(output_buffer, parser, cast->
name);
 
 4848                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4853                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4854                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 4856                pm_buffer_append_byte(output_buffer, 
' ');
 
 4857                prettyprint_location(output_buffer, parser, location);
 
 4858                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4859                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4860                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4865                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4866                pm_buffer_append_string(output_buffer, 
"+-- binary_operator_loc:", 24);
 
 4868                pm_buffer_append_byte(output_buffer, 
' ');
 
 4869                prettyprint_location(output_buffer, parser, location);
 
 4870                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4871                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4872                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4877                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4878                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 4879                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4881                size_t prefix_length = prefix_buffer->
length;
 
 4882                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 4883                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4884                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 4885                prefix_buffer->
length = prefix_length;
 
 4890                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4891                pm_buffer_append_string(output_buffer, 
"+-- binary_operator:", 20);
 
 4892                pm_buffer_append_byte(output_buffer, 
' ');
 
 4894                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4899        case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
 
 4901            pm_buffer_append_string(output_buffer, 
"@ InstanceVariableOrWriteNode (location: ", 41);
 
 4902            prettyprint_location(output_buffer, parser, &node->
location);
 
 4903            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4907                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4908                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 4909                pm_buffer_append_byte(output_buffer, 
' ');
 
 4910                prettyprint_constant(output_buffer, parser, cast->
name);
 
 4911                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4916                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4917                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 4919                pm_buffer_append_byte(output_buffer, 
' ');
 
 4920                prettyprint_location(output_buffer, parser, location);
 
 4921                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4922                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4923                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4928                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4929                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 4931                pm_buffer_append_byte(output_buffer, 
' ');
 
 4932                prettyprint_location(output_buffer, parser, location);
 
 4933                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 4934                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 4935                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 4940                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4941                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 4942                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4944                size_t prefix_length = prefix_buffer->
length;
 
 4945                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 4946                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4947                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 4948                prefix_buffer->
length = prefix_length;
 
 4953        case PM_INSTANCE_VARIABLE_READ_NODE: {
 
 4955            pm_buffer_append_string(output_buffer, 
"@ InstanceVariableReadNode (location: ", 38);
 
 4956            prettyprint_location(output_buffer, parser, &node->
location);
 
 4957            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4961                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4962                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 4963                pm_buffer_append_byte(output_buffer, 
' ');
 
 4964                prettyprint_constant(output_buffer, parser, cast->
name);
 
 4965                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4970        case PM_INSTANCE_VARIABLE_TARGET_NODE: {
 
 4972            pm_buffer_append_string(output_buffer, 
"@ InstanceVariableTargetNode (location: ", 40);
 
 4973            prettyprint_location(output_buffer, parser, &node->
location);
 
 4974            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4978                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4979                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 4980                pm_buffer_append_byte(output_buffer, 
' ');
 
 4981                prettyprint_constant(output_buffer, parser, cast->
name);
 
 4982                pm_buffer_append_byte(output_buffer, 
'\n');
 
 4987        case PM_INSTANCE_VARIABLE_WRITE_NODE: {
 
 4989            pm_buffer_append_string(output_buffer, 
"@ InstanceVariableWriteNode (location: ", 39);
 
 4990            prettyprint_location(output_buffer, parser, &node->
location);
 
 4991            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 4995                pm_buffer_concat(output_buffer, prefix_buffer);
 
 4996                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 4997                pm_buffer_append_byte(output_buffer, 
' ');
 
 4998                prettyprint_constant(output_buffer, parser, cast->
name);
 
 4999                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5004                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5005                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 5007                pm_buffer_append_byte(output_buffer, 
' ');
 
 5008                prettyprint_location(output_buffer, parser, location);
 
 5009                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5010                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5011                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5016                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5017                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 5018                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5020                size_t prefix_length = prefix_buffer->
length;
 
 5021                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5022                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5023                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 5024                prefix_buffer->
length = prefix_length;
 
 5029                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5030                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 5032                pm_buffer_append_byte(output_buffer, 
' ');
 
 5033                prettyprint_location(output_buffer, parser, location);
 
 5034                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5035                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5036                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5041        case PM_INTEGER_NODE: {
 
 5043            pm_buffer_append_string(output_buffer, 
"@ IntegerNode (location: ", 25);
 
 5044            prettyprint_location(output_buffer, parser, &node->
location);
 
 5045            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5049                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5050                pm_buffer_append_string(output_buffer, 
"+-- IntegerBaseFlags:", 21);
 
 5052                if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_BINARY) {
 
 5053                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5054                    pm_buffer_append_string(output_buffer, 
" binary", 7);
 
 5057                if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_DECIMAL) {
 
 5058                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5059                    pm_buffer_append_string(output_buffer, 
" decimal", 8);
 
 5062                if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_OCTAL) {
 
 5063                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5064                    pm_buffer_append_string(output_buffer, 
" octal", 6);
 
 5067                if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_HEXADECIMAL) {
 
 5068                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5069                    pm_buffer_append_string(output_buffer, 
" hexadecimal", 12);
 
 5072                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 5073                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5078                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5079                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 5081                pm_buffer_append_byte(output_buffer, 
' ');
 
 5083                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5088        case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
 
 5090            pm_buffer_append_string(output_buffer, 
"@ InterpolatedMatchLastLineNode (location: ", 43);
 
 5091            prettyprint_location(output_buffer, parser, &node->
location);
 
 5092            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5096                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5097                pm_buffer_append_string(output_buffer, 
"+-- RegularExpressionFlags:", 27);
 
 5099                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE) {
 
 5100                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5101                    pm_buffer_append_string(output_buffer, 
" ignore_case", 12);
 
 5104                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EXTENDED) {
 
 5105                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5106                    pm_buffer_append_string(output_buffer, 
" extended", 9);
 
 5109                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE) {
 
 5110                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5111                    pm_buffer_append_string(output_buffer, 
" multi_line", 11);
 
 5114                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ONCE) {
 
 5115                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5116                    pm_buffer_append_string(output_buffer, 
" once", 5);
 
 5119                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EUC_JP) {
 
 5120                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5121                    pm_buffer_append_string(output_buffer, 
" euc_jp", 7);
 
 5124                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT) {
 
 5125                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5126                    pm_buffer_append_string(output_buffer, 
" ascii_8bit", 11);
 
 5129                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J) {
 
 5130                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5131                    pm_buffer_append_string(output_buffer, 
" windows_31j", 12);
 
 5134                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_UTF_8) {
 
 5135                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5136                    pm_buffer_append_string(output_buffer, 
" utf_8", 6);
 
 5139                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING) {
 
 5140                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5141                    pm_buffer_append_string(output_buffer, 
" forced_utf8_encoding", 21);
 
 5144                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING) {
 
 5145                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5146                    pm_buffer_append_string(output_buffer, 
" forced_binary_encoding", 23);
 
 5149                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING) {
 
 5150                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5151                    pm_buffer_append_string(output_buffer, 
" forced_us_ascii_encoding", 25);
 
 5154                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 5155                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5160                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5161                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 5163                pm_buffer_append_byte(output_buffer, 
' ');
 
 5164                prettyprint_location(output_buffer, parser, location);
 
 5165                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5166                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5167                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5172                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5173                pm_buffer_append_string(output_buffer, 
"+-- parts:", 10);
 
 5174                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
 
 5177                for (uint32_t index = 0; index < last_index; index++) {
 
 5178                    size_t prefix_length = prefix_buffer->
length;
 
 5179                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5180                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 5181                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 5182                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 5183                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
 
 5184                    prefix_buffer->
length = prefix_length;
 
 5190                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5191                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 5193                pm_buffer_append_byte(output_buffer, 
' ');
 
 5194                prettyprint_location(output_buffer, parser, location);
 
 5195                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5196                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5197                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5202        case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
 
 5204            pm_buffer_append_string(output_buffer, 
"@ InterpolatedRegularExpressionNode (location: ", 47);
 
 5205            prettyprint_location(output_buffer, parser, &node->
location);
 
 5206            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5210                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5211                pm_buffer_append_string(output_buffer, 
"+-- RegularExpressionFlags:", 27);
 
 5213                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE) {
 
 5214                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5215                    pm_buffer_append_string(output_buffer, 
" ignore_case", 12);
 
 5218                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EXTENDED) {
 
 5219                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5220                    pm_buffer_append_string(output_buffer, 
" extended", 9);
 
 5223                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE) {
 
 5224                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5225                    pm_buffer_append_string(output_buffer, 
" multi_line", 11);
 
 5228                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ONCE) {
 
 5229                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5230                    pm_buffer_append_string(output_buffer, 
" once", 5);
 
 5233                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EUC_JP) {
 
 5234                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5235                    pm_buffer_append_string(output_buffer, 
" euc_jp", 7);
 
 5238                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT) {
 
 5239                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5240                    pm_buffer_append_string(output_buffer, 
" ascii_8bit", 11);
 
 5243                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J) {
 
 5244                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5245                    pm_buffer_append_string(output_buffer, 
" windows_31j", 12);
 
 5248                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_UTF_8) {
 
 5249                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5250                    pm_buffer_append_string(output_buffer, 
" utf_8", 6);
 
 5253                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING) {
 
 5254                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5255                    pm_buffer_append_string(output_buffer, 
" forced_utf8_encoding", 21);
 
 5258                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING) {
 
 5259                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5260                    pm_buffer_append_string(output_buffer, 
" forced_binary_encoding", 23);
 
 5263                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING) {
 
 5264                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5265                    pm_buffer_append_string(output_buffer, 
" forced_us_ascii_encoding", 25);
 
 5268                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 5269                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5274                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5275                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 5277                pm_buffer_append_byte(output_buffer, 
' ');
 
 5278                prettyprint_location(output_buffer, parser, location);
 
 5279                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5280                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5281                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5286                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5287                pm_buffer_append_string(output_buffer, 
"+-- parts:", 10);
 
 5288                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
 
 5291                for (uint32_t index = 0; index < last_index; index++) {
 
 5292                    size_t prefix_length = prefix_buffer->
length;
 
 5293                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5294                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 5295                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 5296                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 5297                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
 
 5298                    prefix_buffer->
length = prefix_length;
 
 5304                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5305                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 5307                pm_buffer_append_byte(output_buffer, 
' ');
 
 5308                prettyprint_location(output_buffer, parser, location);
 
 5309                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5310                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5311                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5316        case PM_INTERPOLATED_STRING_NODE: {
 
 5318            pm_buffer_append_string(output_buffer, 
"@ InterpolatedStringNode (location: ", 36);
 
 5319            prettyprint_location(output_buffer, parser, &node->
location);
 
 5320            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5324                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5325                pm_buffer_append_string(output_buffer, 
"+-- InterpolatedStringNodeFlags:", 32);
 
 5327                if (cast->
base.
flags & PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN) {
 
 5328                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5329                    pm_buffer_append_string(output_buffer, 
" frozen", 7);
 
 5332                if (cast->
base.
flags & PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE) {
 
 5333                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5334                    pm_buffer_append_string(output_buffer, 
" mutable", 8);
 
 5337                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 5338                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5343                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5344                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 5346                if (location->
start == NULL) {
 
 5347                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 5349                    pm_buffer_append_byte(output_buffer, 
' ');
 
 5350                    prettyprint_location(output_buffer, parser, location);
 
 5351                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5352                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5353                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5359                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5360                pm_buffer_append_string(output_buffer, 
"+-- parts:", 10);
 
 5361                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
 
 5364                for (uint32_t index = 0; index < last_index; index++) {
 
 5365                    size_t prefix_length = prefix_buffer->
length;
 
 5366                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5367                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 5368                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 5369                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 5370                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
 
 5371                    prefix_buffer->
length = prefix_length;
 
 5377                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5378                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 5380                if (location->
start == NULL) {
 
 5381                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 5383                    pm_buffer_append_byte(output_buffer, 
' ');
 
 5384                    prettyprint_location(output_buffer, parser, location);
 
 5385                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5386                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5387                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5393        case PM_INTERPOLATED_SYMBOL_NODE: {
 
 5395            pm_buffer_append_string(output_buffer, 
"@ InterpolatedSymbolNode (location: ", 36);
 
 5396            prettyprint_location(output_buffer, parser, &node->
location);
 
 5397            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5401                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5402                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 5404                if (location->
start == NULL) {
 
 5405                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 5407                    pm_buffer_append_byte(output_buffer, 
' ');
 
 5408                    prettyprint_location(output_buffer, parser, location);
 
 5409                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5410                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5411                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5417                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5418                pm_buffer_append_string(output_buffer, 
"+-- parts:", 10);
 
 5419                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
 
 5422                for (uint32_t index = 0; index < last_index; index++) {
 
 5423                    size_t prefix_length = prefix_buffer->
length;
 
 5424                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5425                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 5426                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 5427                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 5428                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
 
 5429                    prefix_buffer->
length = prefix_length;
 
 5435                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5436                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 5438                if (location->
start == NULL) {
 
 5439                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 5441                    pm_buffer_append_byte(output_buffer, 
' ');
 
 5442                    prettyprint_location(output_buffer, parser, location);
 
 5443                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5444                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5445                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5451        case PM_INTERPOLATED_X_STRING_NODE: {
 
 5453            pm_buffer_append_string(output_buffer, 
"@ InterpolatedXStringNode (location: ", 37);
 
 5454            prettyprint_location(output_buffer, parser, &node->
location);
 
 5455            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5459                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5460                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 5462                pm_buffer_append_byte(output_buffer, 
' ');
 
 5463                prettyprint_location(output_buffer, parser, location);
 
 5464                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5465                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5466                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5471                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5472                pm_buffer_append_string(output_buffer, 
"+-- parts:", 10);
 
 5473                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
 
 5476                for (uint32_t index = 0; index < last_index; index++) {
 
 5477                    size_t prefix_length = prefix_buffer->
length;
 
 5478                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5479                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 5480                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 5481                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 5482                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
 
 5483                    prefix_buffer->
length = prefix_length;
 
 5489                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5490                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 5492                pm_buffer_append_byte(output_buffer, 
' ');
 
 5493                prettyprint_location(output_buffer, parser, location);
 
 5494                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5495                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5496                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5501        case PM_IT_LOCAL_VARIABLE_READ_NODE: {
 
 5502            pm_buffer_append_string(output_buffer, 
"@ ItLocalVariableReadNode (location: ", 37);
 
 5503            prettyprint_location(output_buffer, parser, &node->
location);
 
 5504            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5508        case PM_IT_PARAMETERS_NODE: {
 
 5509            pm_buffer_append_string(output_buffer, 
"@ ItParametersNode (location: ", 30);
 
 5510            prettyprint_location(output_buffer, parser, &node->
location);
 
 5511            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5515        case PM_KEYWORD_HASH_NODE: {
 
 5517            pm_buffer_append_string(output_buffer, 
"@ KeywordHashNode (location: ", 29);
 
 5518            prettyprint_location(output_buffer, parser, &node->
location);
 
 5519            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5523                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5524                pm_buffer_append_string(output_buffer, 
"+-- KeywordHashNodeFlags:", 25);
 
 5526                if (cast->
base.
flags & PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS) {
 
 5527                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5528                    pm_buffer_append_string(output_buffer, 
" symbol_keys", 12);
 
 5531                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 5532                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5537                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5538                pm_buffer_append_string(output_buffer, 
"+-- elements:", 13);
 
 5539                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
elements.
size));
 
 5542                for (uint32_t index = 0; index < last_index; index++) {
 
 5543                    size_t prefix_length = prefix_buffer->
length;
 
 5544                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 5545                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 5546                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 5547                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 5549                    prefix_buffer->
length = prefix_length;
 
 5555        case PM_KEYWORD_REST_PARAMETER_NODE: {
 
 5557            pm_buffer_append_string(output_buffer, 
"@ KeywordRestParameterNode (location: ", 38);
 
 5558            prettyprint_location(output_buffer, parser, &node->
location);
 
 5559            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5563                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5564                pm_buffer_append_string(output_buffer, 
"+-- ParameterFlags:", 19);
 
 5566                if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
 
 5567                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 5568                    pm_buffer_append_string(output_buffer, 
" repeated_parameter", 19);
 
 5571                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 5572                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5577                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5578                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 5579                if (cast->
name == 0) {
 
 5580                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 5582                    pm_buffer_append_byte(output_buffer, 
' ');
 
 5583                    prettyprint_constant(output_buffer, parser, cast->
name);
 
 5584                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 5590                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5591                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 5593                if (location->
start == NULL) {
 
 5594                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 5596                    pm_buffer_append_byte(output_buffer, 
' ');
 
 5597                    prettyprint_location(output_buffer, parser, location);
 
 5598                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5599                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5600                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5606                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5607                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 5609                pm_buffer_append_byte(output_buffer, 
' ');
 
 5610                prettyprint_location(output_buffer, parser, location);
 
 5611                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5612                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5613                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5618        case PM_LAMBDA_NODE: {
 
 5620            pm_buffer_append_string(output_buffer, 
"@ LambdaNode (location: ", 24);
 
 5621            prettyprint_location(output_buffer, parser, &node->
location);
 
 5622            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5626                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5627                pm_buffer_append_string(output_buffer, 
"+-- locals:", 11);
 
 5628                pm_buffer_append_string(output_buffer, 
" [", 2);
 
 5629                for (uint32_t index = 0; index < cast->
locals.
size; index++) {
 
 5630                    if (index != 0) pm_buffer_append_string(output_buffer, 
", ", 2);
 
 5631                    prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
 
 5633                pm_buffer_append_string(output_buffer, 
"]\n", 2);
 
 5638                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5639                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 5641                pm_buffer_append_byte(output_buffer, 
' ');
 
 5642                prettyprint_location(output_buffer, parser, location);
 
 5643                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5644                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5645                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5650                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5651                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 5653                pm_buffer_append_byte(output_buffer, 
' ');
 
 5654                prettyprint_location(output_buffer, parser, location);
 
 5655                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5656                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5657                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5662                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5663                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 5665                pm_buffer_append_byte(output_buffer, 
' ');
 
 5666                prettyprint_location(output_buffer, parser, location);
 
 5667                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5668                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5669                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5674                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5675                pm_buffer_append_string(output_buffer, 
"+-- parameters:", 15);
 
 5677                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 5679                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 5681                    size_t prefix_length = prefix_buffer->
length;
 
 5682                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5683                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 5685                    prefix_buffer->
length = prefix_length;
 
 5691                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5692                pm_buffer_append_string(output_buffer, 
"+-- body:", 9);
 
 5693                if (cast->
body == NULL) {
 
 5694                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 5696                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 5698                    size_t prefix_length = prefix_buffer->
length;
 
 5699                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 5700                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 5701                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
 
 5702                    prefix_buffer->
length = prefix_length;
 
 5708        case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
 
 5710            pm_buffer_append_string(output_buffer, 
"@ LocalVariableAndWriteNode (location: ", 39);
 
 5711            prettyprint_location(output_buffer, parser, &node->
location);
 
 5712            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5716                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5717                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 5719                pm_buffer_append_byte(output_buffer, 
' ');
 
 5720                prettyprint_location(output_buffer, parser, location);
 
 5721                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5722                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5723                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5728                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5729                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 5731                pm_buffer_append_byte(output_buffer, 
' ');
 
 5732                prettyprint_location(output_buffer, parser, location);
 
 5733                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5734                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5735                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5740                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5741                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 5742                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5744                size_t prefix_length = prefix_buffer->
length;
 
 5745                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5746                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5747                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 5748                prefix_buffer->
length = prefix_length;
 
 5753                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5754                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 5755                pm_buffer_append_byte(output_buffer, 
' ');
 
 5756                prettyprint_constant(output_buffer, parser, cast->
name);
 
 5757                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5762                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5763                pm_buffer_append_string(output_buffer, 
"+-- depth:", 10);
 
 5764                pm_buffer_append_format(output_buffer, 
" %" PRIu32 
"\n", cast->
depth);
 
 5769        case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
 
 5771            pm_buffer_append_string(output_buffer, 
"@ LocalVariableOperatorWriteNode (location: ", 44);
 
 5772            prettyprint_location(output_buffer, parser, &node->
location);
 
 5773            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5777                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5778                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 5780                pm_buffer_append_byte(output_buffer, 
' ');
 
 5781                prettyprint_location(output_buffer, parser, location);
 
 5782                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5783                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5784                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5789                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5790                pm_buffer_append_string(output_buffer, 
"+-- binary_operator_loc:", 24);
 
 5792                pm_buffer_append_byte(output_buffer, 
' ');
 
 5793                prettyprint_location(output_buffer, parser, location);
 
 5794                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5795                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5796                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5801                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5802                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 5803                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5805                size_t prefix_length = prefix_buffer->
length;
 
 5806                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5807                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5808                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 5809                prefix_buffer->
length = prefix_length;
 
 5814                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5815                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 5816                pm_buffer_append_byte(output_buffer, 
' ');
 
 5817                prettyprint_constant(output_buffer, parser, cast->
name);
 
 5818                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5823                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5824                pm_buffer_append_string(output_buffer, 
"+-- binary_operator:", 20);
 
 5825                pm_buffer_append_byte(output_buffer, 
' ');
 
 5827                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5832                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5833                pm_buffer_append_string(output_buffer, 
"+-- depth:", 10);
 
 5834                pm_buffer_append_format(output_buffer, 
" %" PRIu32 
"\n", cast->
depth);
 
 5839        case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
 
 5841            pm_buffer_append_string(output_buffer, 
"@ LocalVariableOrWriteNode (location: ", 38);
 
 5842            prettyprint_location(output_buffer, parser, &node->
location);
 
 5843            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5847                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5848                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 5850                pm_buffer_append_byte(output_buffer, 
' ');
 
 5851                prettyprint_location(output_buffer, parser, location);
 
 5852                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5853                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5854                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5859                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5860                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 5862                pm_buffer_append_byte(output_buffer, 
' ');
 
 5863                prettyprint_location(output_buffer, parser, location);
 
 5864                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5865                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5866                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5871                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5872                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 5873                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5875                size_t prefix_length = prefix_buffer->
length;
 
 5876                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5877                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5878                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 5879                prefix_buffer->
length = prefix_length;
 
 5884                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5885                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 5886                pm_buffer_append_byte(output_buffer, 
' ');
 
 5887                prettyprint_constant(output_buffer, parser, cast->
name);
 
 5888                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5893                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5894                pm_buffer_append_string(output_buffer, 
"+-- depth:", 10);
 
 5895                pm_buffer_append_format(output_buffer, 
" %" PRIu32 
"\n", cast->
depth);
 
 5900        case PM_LOCAL_VARIABLE_READ_NODE: {
 
 5902            pm_buffer_append_string(output_buffer, 
"@ LocalVariableReadNode (location: ", 35);
 
 5903            prettyprint_location(output_buffer, parser, &node->
location);
 
 5904            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5908                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5909                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 5910                pm_buffer_append_byte(output_buffer, 
' ');
 
 5911                prettyprint_constant(output_buffer, parser, cast->
name);
 
 5912                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5917                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5918                pm_buffer_append_string(output_buffer, 
"+-- depth:", 10);
 
 5919                pm_buffer_append_format(output_buffer, 
" %" PRIu32 
"\n", cast->
depth);
 
 5924        case PM_LOCAL_VARIABLE_TARGET_NODE: {
 
 5926            pm_buffer_append_string(output_buffer, 
"@ LocalVariableTargetNode (location: ", 37);
 
 5927            prettyprint_location(output_buffer, parser, &node->
location);
 
 5928            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5932                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5933                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 5934                pm_buffer_append_byte(output_buffer, 
' ');
 
 5935                prettyprint_constant(output_buffer, parser, cast->
name);
 
 5936                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5941                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5942                pm_buffer_append_string(output_buffer, 
"+-- depth:", 10);
 
 5943                pm_buffer_append_format(output_buffer, 
" %" PRIu32 
"\n", cast->
depth);
 
 5948        case PM_LOCAL_VARIABLE_WRITE_NODE: {
 
 5950            pm_buffer_append_string(output_buffer, 
"@ LocalVariableWriteNode (location: ", 36);
 
 5951            prettyprint_location(output_buffer, parser, &node->
location);
 
 5952            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 5956                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5957                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 5958                pm_buffer_append_byte(output_buffer, 
' ');
 
 5959                prettyprint_constant(output_buffer, parser, cast->
name);
 
 5960                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5965                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5966                pm_buffer_append_string(output_buffer, 
"+-- depth:", 10);
 
 5967                pm_buffer_append_format(output_buffer, 
" %" PRIu32 
"\n", cast->
depth);
 
 5972                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5973                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 5975                pm_buffer_append_byte(output_buffer, 
' ');
 
 5976                prettyprint_location(output_buffer, parser, location);
 
 5977                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 5978                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 5979                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 5984                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5985                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 5986                pm_buffer_append_byte(output_buffer, 
'\n');
 
 5988                size_t prefix_length = prefix_buffer->
length;
 
 5989                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 5990                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5991                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 5992                prefix_buffer->
length = prefix_length;
 
 5997                pm_buffer_concat(output_buffer, prefix_buffer);
 
 5998                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 6000                pm_buffer_append_byte(output_buffer, 
' ');
 
 6001                prettyprint_location(output_buffer, parser, location);
 
 6002                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6003                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6004                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6009        case PM_MATCH_LAST_LINE_NODE: {
 
 6011            pm_buffer_append_string(output_buffer, 
"@ MatchLastLineNode (location: ", 31);
 
 6012            prettyprint_location(output_buffer, parser, &node->
location);
 
 6013            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6017                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6018                pm_buffer_append_string(output_buffer, 
"+-- RegularExpressionFlags:", 27);
 
 6020                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE) {
 
 6021                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6022                    pm_buffer_append_string(output_buffer, 
" ignore_case", 12);
 
 6025                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EXTENDED) {
 
 6026                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6027                    pm_buffer_append_string(output_buffer, 
" extended", 9);
 
 6030                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE) {
 
 6031                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6032                    pm_buffer_append_string(output_buffer, 
" multi_line", 11);
 
 6035                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ONCE) {
 
 6036                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6037                    pm_buffer_append_string(output_buffer, 
" once", 5);
 
 6040                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EUC_JP) {
 
 6041                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6042                    pm_buffer_append_string(output_buffer, 
" euc_jp", 7);
 
 6045                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT) {
 
 6046                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6047                    pm_buffer_append_string(output_buffer, 
" ascii_8bit", 11);
 
 6050                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J) {
 
 6051                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6052                    pm_buffer_append_string(output_buffer, 
" windows_31j", 12);
 
 6055                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_UTF_8) {
 
 6056                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6057                    pm_buffer_append_string(output_buffer, 
" utf_8", 6);
 
 6060                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING) {
 
 6061                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6062                    pm_buffer_append_string(output_buffer, 
" forced_utf8_encoding", 21);
 
 6065                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING) {
 
 6066                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6067                    pm_buffer_append_string(output_buffer, 
" forced_binary_encoding", 23);
 
 6070                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING) {
 
 6071                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6072                    pm_buffer_append_string(output_buffer, 
" forced_us_ascii_encoding", 25);
 
 6075                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 6076                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6081                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6082                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 6084                pm_buffer_append_byte(output_buffer, 
' ');
 
 6085                prettyprint_location(output_buffer, parser, location);
 
 6086                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6087                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6088                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6093                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6094                pm_buffer_append_string(output_buffer, 
"+-- content_loc:", 16);
 
 6096                pm_buffer_append_byte(output_buffer, 
' ');
 
 6097                prettyprint_location(output_buffer, parser, location);
 
 6098                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6099                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6100                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6105                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6106                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 6108                pm_buffer_append_byte(output_buffer, 
' ');
 
 6109                prettyprint_location(output_buffer, parser, location);
 
 6110                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6111                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6112                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6117                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6118                pm_buffer_append_string(output_buffer, 
"+-- unescaped:", 14);
 
 6119                pm_buffer_append_string(output_buffer, 
" \"", 2);
 
 6121                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6126        case PM_MATCH_PREDICATE_NODE: {
 
 6128            pm_buffer_append_string(output_buffer, 
"@ MatchPredicateNode (location: ", 32);
 
 6129            prettyprint_location(output_buffer, parser, &node->
location);
 
 6130            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6134                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6135                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 6136                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6138                size_t prefix_length = prefix_buffer->
length;
 
 6139                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6140                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6141                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 6142                prefix_buffer->
length = prefix_length;
 
 6147                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6148                pm_buffer_append_string(output_buffer, 
"+-- pattern:", 12);
 
 6149                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6151                size_t prefix_length = prefix_buffer->
length;
 
 6152                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6153                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6154                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
pattern, prefix_buffer);
 
 6155                prefix_buffer->
length = prefix_length;
 
 6160                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6161                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 6163                pm_buffer_append_byte(output_buffer, 
' ');
 
 6164                prettyprint_location(output_buffer, parser, location);
 
 6165                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6166                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6167                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6172        case PM_MATCH_REQUIRED_NODE: {
 
 6174            pm_buffer_append_string(output_buffer, 
"@ MatchRequiredNode (location: ", 31);
 
 6175            prettyprint_location(output_buffer, parser, &node->
location);
 
 6176            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6180                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6181                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 6182                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6184                size_t prefix_length = prefix_buffer->
length;
 
 6185                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6186                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6187                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 6188                prefix_buffer->
length = prefix_length;
 
 6193                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6194                pm_buffer_append_string(output_buffer, 
"+-- pattern:", 12);
 
 6195                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6197                size_t prefix_length = prefix_buffer->
length;
 
 6198                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6199                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6200                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
pattern, prefix_buffer);
 
 6201                prefix_buffer->
length = prefix_length;
 
 6206                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6207                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 6209                pm_buffer_append_byte(output_buffer, 
' ');
 
 6210                prettyprint_location(output_buffer, parser, location);
 
 6211                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6212                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6213                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6218        case PM_MATCH_WRITE_NODE: {
 
 6220            pm_buffer_append_string(output_buffer, 
"@ MatchWriteNode (location: ", 28);
 
 6221            prettyprint_location(output_buffer, parser, &node->
location);
 
 6222            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6226                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6227                pm_buffer_append_string(output_buffer, 
"+-- call:", 9);
 
 6228                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6230                size_t prefix_length = prefix_buffer->
length;
 
 6231                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6232                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6233                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
call, prefix_buffer);
 
 6234                prefix_buffer->
length = prefix_length;
 
 6239                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6240                pm_buffer_append_string(output_buffer, 
"+-- targets:", 12);
 
 6241                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
targets.
size));
 
 6244                for (uint32_t index = 0; index < last_index; index++) {
 
 6245                    size_t prefix_length = prefix_buffer->
length;
 
 6246                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 6247                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6248                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6249                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6251                    prefix_buffer->
length = prefix_length;
 
 6257        case PM_MISSING_NODE: {
 
 6258            pm_buffer_append_string(output_buffer, 
"@ MissingNode (location: ", 25);
 
 6259            prettyprint_location(output_buffer, parser, &node->
location);
 
 6260            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6264        case PM_MODULE_NODE: {
 
 6266            pm_buffer_append_string(output_buffer, 
"@ ModuleNode (location: ", 24);
 
 6267            prettyprint_location(output_buffer, parser, &node->
location);
 
 6268            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6272                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6273                pm_buffer_append_string(output_buffer, 
"+-- locals:", 11);
 
 6274                pm_buffer_append_string(output_buffer, 
" [", 2);
 
 6275                for (uint32_t index = 0; index < cast->
locals.
size; index++) {
 
 6276                    if (index != 0) pm_buffer_append_string(output_buffer, 
", ", 2);
 
 6277                    prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
 
 6279                pm_buffer_append_string(output_buffer, 
"]\n", 2);
 
 6284                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6285                pm_buffer_append_string(output_buffer, 
"+-- module_keyword_loc:", 23);
 
 6287                pm_buffer_append_byte(output_buffer, 
' ');
 
 6288                prettyprint_location(output_buffer, parser, location);
 
 6289                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6290                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6291                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6296                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6297                pm_buffer_append_string(output_buffer, 
"+-- constant_path:", 18);
 
 6298                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6300                size_t prefix_length = prefix_buffer->
length;
 
 6301                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6302                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6304                prefix_buffer->
length = prefix_length;
 
 6309                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6310                pm_buffer_append_string(output_buffer, 
"+-- body:", 9);
 
 6311                if (cast->
body == NULL) {
 
 6312                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6314                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 6316                    size_t prefix_length = prefix_buffer->
length;
 
 6317                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6318                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6319                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
 
 6320                    prefix_buffer->
length = prefix_length;
 
 6326                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6327                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 6329                pm_buffer_append_byte(output_buffer, 
' ');
 
 6330                prettyprint_location(output_buffer, parser, location);
 
 6331                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6332                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6333                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6338                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6339                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 6340                pm_buffer_append_byte(output_buffer, 
' ');
 
 6341                prettyprint_constant(output_buffer, parser, cast->
name);
 
 6342                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6347        case PM_MULTI_TARGET_NODE: {
 
 6349            pm_buffer_append_string(output_buffer, 
"@ MultiTargetNode (location: ", 29);
 
 6350            prettyprint_location(output_buffer, parser, &node->
location);
 
 6351            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6355                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6356                pm_buffer_append_string(output_buffer, 
"+-- lefts:", 10);
 
 6357                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
lefts.
size));
 
 6360                for (uint32_t index = 0; index < last_index; index++) {
 
 6361                    size_t prefix_length = prefix_buffer->
length;
 
 6362                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6363                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6364                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6365                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6366                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
lefts.
nodes[index], prefix_buffer);
 
 6367                    prefix_buffer->
length = prefix_length;
 
 6373                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6374                pm_buffer_append_string(output_buffer, 
"+-- rest:", 9);
 
 6375                if (cast->
rest == NULL) {
 
 6376                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6378                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 6380                    size_t prefix_length = prefix_buffer->
length;
 
 6381                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6382                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6383                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
 
 6384                    prefix_buffer->
length = prefix_length;
 
 6390                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6391                pm_buffer_append_string(output_buffer, 
"+-- rights:", 11);
 
 6392                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
rights.
size));
 
 6395                for (uint32_t index = 0; index < last_index; index++) {
 
 6396                    size_t prefix_length = prefix_buffer->
length;
 
 6397                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6398                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6399                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6400                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6401                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rights.
nodes[index], prefix_buffer);
 
 6402                    prefix_buffer->
length = prefix_length;
 
 6408                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6409                pm_buffer_append_string(output_buffer, 
"+-- lparen_loc:", 15);
 
 6411                if (location->
start == NULL) {
 
 6412                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6414                    pm_buffer_append_byte(output_buffer, 
' ');
 
 6415                    prettyprint_location(output_buffer, parser, location);
 
 6416                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6417                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6418                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6424                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6425                pm_buffer_append_string(output_buffer, 
"+-- rparen_loc:", 15);
 
 6427                if (location->
start == NULL) {
 
 6428                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6430                    pm_buffer_append_byte(output_buffer, 
' ');
 
 6431                    prettyprint_location(output_buffer, parser, location);
 
 6432                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6433                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6434                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6440        case PM_MULTI_WRITE_NODE: {
 
 6442            pm_buffer_append_string(output_buffer, 
"@ MultiWriteNode (location: ", 28);
 
 6443            prettyprint_location(output_buffer, parser, &node->
location);
 
 6444            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6448                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6449                pm_buffer_append_string(output_buffer, 
"+-- lefts:", 10);
 
 6450                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
lefts.
size));
 
 6453                for (uint32_t index = 0; index < last_index; index++) {
 
 6454                    size_t prefix_length = prefix_buffer->
length;
 
 6455                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6456                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6457                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6458                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6459                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
lefts.
nodes[index], prefix_buffer);
 
 6460                    prefix_buffer->
length = prefix_length;
 
 6466                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6467                pm_buffer_append_string(output_buffer, 
"+-- rest:", 9);
 
 6468                if (cast->
rest == NULL) {
 
 6469                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6471                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 6473                    size_t prefix_length = prefix_buffer->
length;
 
 6474                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6475                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6476                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
 
 6477                    prefix_buffer->
length = prefix_length;
 
 6483                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6484                pm_buffer_append_string(output_buffer, 
"+-- rights:", 11);
 
 6485                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
rights.
size));
 
 6488                for (uint32_t index = 0; index < last_index; index++) {
 
 6489                    size_t prefix_length = prefix_buffer->
length;
 
 6490                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6491                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6492                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6493                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6494                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rights.
nodes[index], prefix_buffer);
 
 6495                    prefix_buffer->
length = prefix_length;
 
 6501                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6502                pm_buffer_append_string(output_buffer, 
"+-- lparen_loc:", 15);
 
 6504                if (location->
start == NULL) {
 
 6505                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6507                    pm_buffer_append_byte(output_buffer, 
' ');
 
 6508                    prettyprint_location(output_buffer, parser, location);
 
 6509                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6510                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6511                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6517                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6518                pm_buffer_append_string(output_buffer, 
"+-- rparen_loc:", 15);
 
 6520                if (location->
start == NULL) {
 
 6521                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6523                    pm_buffer_append_byte(output_buffer, 
' ');
 
 6524                    prettyprint_location(output_buffer, parser, location);
 
 6525                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6526                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6527                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6533                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6534                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 6536                pm_buffer_append_byte(output_buffer, 
' ');
 
 6537                prettyprint_location(output_buffer, parser, location);
 
 6538                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6539                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6540                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6545                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6546                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 6547                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6549                size_t prefix_length = prefix_buffer->
length;
 
 6550                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 6551                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6552                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 6553                prefix_buffer->
length = prefix_length;
 
 6558        case PM_NEXT_NODE: {
 
 6560            pm_buffer_append_string(output_buffer, 
"@ NextNode (location: ", 22);
 
 6561            prettyprint_location(output_buffer, parser, &node->
location);
 
 6562            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6566                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6567                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 6569                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6571                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 6573                    size_t prefix_length = prefix_buffer->
length;
 
 6574                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6575                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6576                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 6577                    prefix_buffer->
length = prefix_length;
 
 6583                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6584                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 6586                pm_buffer_append_byte(output_buffer, 
' ');
 
 6587                prettyprint_location(output_buffer, parser, location);
 
 6588                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6589                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6590                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6596            pm_buffer_append_string(output_buffer, 
"@ NilNode (location: ", 21);
 
 6597            prettyprint_location(output_buffer, parser, &node->
location);
 
 6598            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6602        case PM_NO_KEYWORDS_PARAMETER_NODE: {
 
 6604            pm_buffer_append_string(output_buffer, 
"@ NoKeywordsParameterNode (location: ", 37);
 
 6605            prettyprint_location(output_buffer, parser, &node->
location);
 
 6606            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6610                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6611                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 6613                pm_buffer_append_byte(output_buffer, 
' ');
 
 6614                prettyprint_location(output_buffer, parser, location);
 
 6615                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6616                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6617                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6622                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6623                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 6625                pm_buffer_append_byte(output_buffer, 
' ');
 
 6626                prettyprint_location(output_buffer, parser, location);
 
 6627                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6628                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6629                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6634        case PM_NUMBERED_PARAMETERS_NODE: {
 
 6636            pm_buffer_append_string(output_buffer, 
"@ NumberedParametersNode (location: ", 36);
 
 6637            prettyprint_location(output_buffer, parser, &node->
location);
 
 6638            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6642                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6643                pm_buffer_append_string(output_buffer, 
"+-- maximum:", 12);
 
 6644                pm_buffer_append_format(output_buffer, 
" %" PRIu8 
"\n", cast->
maximum);
 
 6649        case PM_NUMBERED_REFERENCE_READ_NODE: {
 
 6651            pm_buffer_append_string(output_buffer, 
"@ NumberedReferenceReadNode (location: ", 39);
 
 6652            prettyprint_location(output_buffer, parser, &node->
location);
 
 6653            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6657                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6658                pm_buffer_append_string(output_buffer, 
"+-- number:", 11);
 
 6659                pm_buffer_append_format(output_buffer, 
" %" PRIu32 
"\n", cast->
number);
 
 6664        case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
 
 6666            pm_buffer_append_string(output_buffer, 
"@ OptionalKeywordParameterNode (location: ", 42);
 
 6667            prettyprint_location(output_buffer, parser, &node->
location);
 
 6668            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6672                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6673                pm_buffer_append_string(output_buffer, 
"+-- ParameterFlags:", 19);
 
 6675                if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
 
 6676                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6677                    pm_buffer_append_string(output_buffer, 
" repeated_parameter", 19);
 
 6680                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 6681                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6686                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6687                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 6688                pm_buffer_append_byte(output_buffer, 
' ');
 
 6689                prettyprint_constant(output_buffer, parser, cast->
name);
 
 6690                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6695                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6696                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 6698                pm_buffer_append_byte(output_buffer, 
' ');
 
 6699                prettyprint_location(output_buffer, parser, location);
 
 6700                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6701                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6702                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6707                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6708                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 6709                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6711                size_t prefix_length = prefix_buffer->
length;
 
 6712                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 6713                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6714                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 6715                prefix_buffer->
length = prefix_length;
 
 6720        case PM_OPTIONAL_PARAMETER_NODE: {
 
 6722            pm_buffer_append_string(output_buffer, 
"@ OptionalParameterNode (location: ", 35);
 
 6723            prettyprint_location(output_buffer, parser, &node->
location);
 
 6724            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6728                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6729                pm_buffer_append_string(output_buffer, 
"+-- ParameterFlags:", 19);
 
 6731                if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
 
 6732                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6733                    pm_buffer_append_string(output_buffer, 
" repeated_parameter", 19);
 
 6736                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 6737                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6742                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6743                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 6744                pm_buffer_append_byte(output_buffer, 
' ');
 
 6745                prettyprint_constant(output_buffer, parser, cast->
name);
 
 6746                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6751                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6752                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 6754                pm_buffer_append_byte(output_buffer, 
' ');
 
 6755                prettyprint_location(output_buffer, parser, location);
 
 6756                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6757                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6758                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6763                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6764                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 6766                pm_buffer_append_byte(output_buffer, 
' ');
 
 6767                prettyprint_location(output_buffer, parser, location);
 
 6768                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6769                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6770                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6775                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6776                pm_buffer_append_string(output_buffer, 
"+-- value:", 10);
 
 6777                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6779                size_t prefix_length = prefix_buffer->
length;
 
 6780                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 6781                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6782                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
 
 6783                prefix_buffer->
length = prefix_length;
 
 6790            pm_buffer_append_string(output_buffer, 
"@ OrNode (location: ", 20);
 
 6791            prettyprint_location(output_buffer, parser, &node->
location);
 
 6792            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6796                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6797                pm_buffer_append_string(output_buffer, 
"+-- left:", 9);
 
 6798                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6800                size_t prefix_length = prefix_buffer->
length;
 
 6801                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6802                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6803                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
 
 6804                prefix_buffer->
length = prefix_length;
 
 6809                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6810                pm_buffer_append_string(output_buffer, 
"+-- right:", 10);
 
 6811                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6813                size_t prefix_length = prefix_buffer->
length;
 
 6814                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6815                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6816                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
 
 6817                prefix_buffer->
length = prefix_length;
 
 6822                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6823                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 6825                pm_buffer_append_byte(output_buffer, 
' ');
 
 6826                prettyprint_location(output_buffer, parser, location);
 
 6827                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 6828                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 6829                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 6834        case PM_PARAMETERS_NODE: {
 
 6836            pm_buffer_append_string(output_buffer, 
"@ ParametersNode (location: ", 28);
 
 6837            prettyprint_location(output_buffer, parser, &node->
location);
 
 6838            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6842                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6843                pm_buffer_append_string(output_buffer, 
"+-- requireds:", 14);
 
 6844                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
requireds.
size));
 
 6847                for (uint32_t index = 0; index < last_index; index++) {
 
 6848                    size_t prefix_length = prefix_buffer->
length;
 
 6849                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6850                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6851                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6852                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6854                    prefix_buffer->
length = prefix_length;
 
 6860                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6861                pm_buffer_append_string(output_buffer, 
"+-- optionals:", 14);
 
 6862                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
optionals.
size));
 
 6865                for (uint32_t index = 0; index < last_index; index++) {
 
 6866                    size_t prefix_length = prefix_buffer->
length;
 
 6867                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6868                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6869                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6870                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6872                    prefix_buffer->
length = prefix_length;
 
 6878                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6879                pm_buffer_append_string(output_buffer, 
"+-- rest:", 9);
 
 6880                if (cast->
rest == NULL) {
 
 6881                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6883                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 6885                    size_t prefix_length = prefix_buffer->
length;
 
 6886                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6887                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6888                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
 
 6889                    prefix_buffer->
length = prefix_length;
 
 6895                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6896                pm_buffer_append_string(output_buffer, 
"+-- posts:", 10);
 
 6897                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
posts.
size));
 
 6900                for (uint32_t index = 0; index < last_index; index++) {
 
 6901                    size_t prefix_length = prefix_buffer->
length;
 
 6902                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6903                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6904                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6905                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6906                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
posts.
nodes[index], prefix_buffer);
 
 6907                    prefix_buffer->
length = prefix_length;
 
 6913                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6914                pm_buffer_append_string(output_buffer, 
"+-- keywords:", 13);
 
 6915                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
keywords.
size));
 
 6918                for (uint32_t index = 0; index < last_index; index++) {
 
 6919                    size_t prefix_length = prefix_buffer->
length;
 
 6920                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6921                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6922                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 6923                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 6925                    prefix_buffer->
length = prefix_length;
 
 6931                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6932                pm_buffer_append_string(output_buffer, 
"+-- keyword_rest:", 17);
 
 6934                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6936                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 6938                    size_t prefix_length = prefix_buffer->
length;
 
 6939                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6940                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6942                    prefix_buffer->
length = prefix_length;
 
 6948                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6949                pm_buffer_append_string(output_buffer, 
"+-- block:", 10);
 
 6950                if (cast->
block == NULL) {
 
 6951                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6953                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 6955                    size_t prefix_length = prefix_buffer->
length;
 
 6956                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 6957                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6958                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
 
 6959                    prefix_buffer->
length = prefix_length;
 
 6965        case PM_PARENTHESES_NODE: {
 
 6967            pm_buffer_append_string(output_buffer, 
"@ ParenthesesNode (location: ", 29);
 
 6968            prettyprint_location(output_buffer, parser, &node->
location);
 
 6969            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 6973                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6974                pm_buffer_append_string(output_buffer, 
"+-- ParenthesesNodeFlags:", 25);
 
 6976                if (cast->
base.
flags & PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS) {
 
 6977                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 6978                    pm_buffer_append_string(output_buffer, 
" multiple_statements", 20);
 
 6981                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 6982                pm_buffer_append_byte(output_buffer, 
'\n');
 
 6987                pm_buffer_concat(output_buffer, prefix_buffer);
 
 6988                pm_buffer_append_string(output_buffer, 
"+-- body:", 9);
 
 6989                if (cast->
body == NULL) {
 
 6990                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 6992                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 6994                    size_t prefix_length = prefix_buffer->
length;
 
 6995                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 6996                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 6997                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
 
 6998                    prefix_buffer->
length = prefix_length;
 
 7004                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7005                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 7007                pm_buffer_append_byte(output_buffer, 
' ');
 
 7008                prettyprint_location(output_buffer, parser, location);
 
 7009                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7010                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7011                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7016                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7017                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 7019                pm_buffer_append_byte(output_buffer, 
' ');
 
 7020                prettyprint_location(output_buffer, parser, location);
 
 7021                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7022                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7023                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7028        case PM_PINNED_EXPRESSION_NODE: {
 
 7030            pm_buffer_append_string(output_buffer, 
"@ PinnedExpressionNode (location: ", 34);
 
 7031            prettyprint_location(output_buffer, parser, &node->
location);
 
 7032            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7036                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7037                pm_buffer_append_string(output_buffer, 
"+-- expression:", 15);
 
 7038                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7040                size_t prefix_length = prefix_buffer->
length;
 
 7041                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7042                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7044                prefix_buffer->
length = prefix_length;
 
 7049                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7050                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 7052                pm_buffer_append_byte(output_buffer, 
' ');
 
 7053                prettyprint_location(output_buffer, parser, location);
 
 7054                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7055                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7056                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7061                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7062                pm_buffer_append_string(output_buffer, 
"+-- lparen_loc:", 15);
 
 7064                pm_buffer_append_byte(output_buffer, 
' ');
 
 7065                prettyprint_location(output_buffer, parser, location);
 
 7066                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7067                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7068                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7073                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7074                pm_buffer_append_string(output_buffer, 
"+-- rparen_loc:", 15);
 
 7076                pm_buffer_append_byte(output_buffer, 
' ');
 
 7077                prettyprint_location(output_buffer, parser, location);
 
 7078                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7079                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7080                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7085        case PM_PINNED_VARIABLE_NODE: {
 
 7087            pm_buffer_append_string(output_buffer, 
"@ PinnedVariableNode (location: ", 32);
 
 7088            prettyprint_location(output_buffer, parser, &node->
location);
 
 7089            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7093                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7094                pm_buffer_append_string(output_buffer, 
"+-- variable:", 13);
 
 7095                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7097                size_t prefix_length = prefix_buffer->
length;
 
 7098                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7099                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7100                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
variable, prefix_buffer);
 
 7101                prefix_buffer->
length = prefix_length;
 
 7106                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7107                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 7109                pm_buffer_append_byte(output_buffer, 
' ');
 
 7110                prettyprint_location(output_buffer, parser, location);
 
 7111                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7112                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7113                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7118        case PM_POST_EXECUTION_NODE: {
 
 7120            pm_buffer_append_string(output_buffer, 
"@ PostExecutionNode (location: ", 31);
 
 7121            prettyprint_location(output_buffer, parser, &node->
location);
 
 7122            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7126                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7127                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 7129                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7131                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7133                    size_t prefix_length = prefix_buffer->
length;
 
 7134                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7135                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7137                    prefix_buffer->
length = prefix_length;
 
 7143                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7144                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 7146                pm_buffer_append_byte(output_buffer, 
' ');
 
 7147                prettyprint_location(output_buffer, parser, location);
 
 7148                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7149                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7150                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7155                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7156                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 7158                pm_buffer_append_byte(output_buffer, 
' ');
 
 7159                prettyprint_location(output_buffer, parser, location);
 
 7160                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7161                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7162                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7167                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7168                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 7170                pm_buffer_append_byte(output_buffer, 
' ');
 
 7171                prettyprint_location(output_buffer, parser, location);
 
 7172                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7173                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7174                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7179        case PM_PRE_EXECUTION_NODE: {
 
 7181            pm_buffer_append_string(output_buffer, 
"@ PreExecutionNode (location: ", 30);
 
 7182            prettyprint_location(output_buffer, parser, &node->
location);
 
 7183            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7187                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7188                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 7190                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7192                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7194                    size_t prefix_length = prefix_buffer->
length;
 
 7195                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7196                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7198                    prefix_buffer->
length = prefix_length;
 
 7204                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7205                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 7207                pm_buffer_append_byte(output_buffer, 
' ');
 
 7208                prettyprint_location(output_buffer, parser, location);
 
 7209                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7210                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7211                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7216                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7217                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 7219                pm_buffer_append_byte(output_buffer, 
' ');
 
 7220                prettyprint_location(output_buffer, parser, location);
 
 7221                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7222                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7223                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7228                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7229                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 7231                pm_buffer_append_byte(output_buffer, 
' ');
 
 7232                prettyprint_location(output_buffer, parser, location);
 
 7233                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7234                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7235                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7240        case PM_PROGRAM_NODE: {
 
 7242            pm_buffer_append_string(output_buffer, 
"@ ProgramNode (location: ", 25);
 
 7243            prettyprint_location(output_buffer, parser, &node->
location);
 
 7244            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7248                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7249                pm_buffer_append_string(output_buffer, 
"+-- locals:", 11);
 
 7250                pm_buffer_append_string(output_buffer, 
" [", 2);
 
 7251                for (uint32_t index = 0; index < cast->
locals.
size; index++) {
 
 7252                    if (index != 0) pm_buffer_append_string(output_buffer, 
", ", 2);
 
 7253                    prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
 
 7255                pm_buffer_append_string(output_buffer, 
"]\n", 2);
 
 7260                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7261                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 7262                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7264                size_t prefix_length = prefix_buffer->
length;
 
 7265                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 7266                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7268                prefix_buffer->
length = prefix_length;
 
 7273        case PM_RANGE_NODE: {
 
 7275            pm_buffer_append_string(output_buffer, 
"@ RangeNode (location: ", 23);
 
 7276            prettyprint_location(output_buffer, parser, &node->
location);
 
 7277            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7281                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7282                pm_buffer_append_string(output_buffer, 
"+-- RangeFlags:", 15);
 
 7284                if (cast->
base.
flags & PM_RANGE_FLAGS_EXCLUDE_END) {
 
 7285                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7286                    pm_buffer_append_string(output_buffer, 
" exclude_end", 12);
 
 7289                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 7290                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7295                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7296                pm_buffer_append_string(output_buffer, 
"+-- left:", 9);
 
 7297                if (cast->
left == NULL) {
 
 7298                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7300                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7302                    size_t prefix_length = prefix_buffer->
length;
 
 7303                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7304                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7305                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
 
 7306                    prefix_buffer->
length = prefix_length;
 
 7312                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7313                pm_buffer_append_string(output_buffer, 
"+-- right:", 10);
 
 7314                if (cast->
right == NULL) {
 
 7315                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7317                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7319                    size_t prefix_length = prefix_buffer->
length;
 
 7320                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7321                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7322                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
 
 7323                    prefix_buffer->
length = prefix_length;
 
 7329                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7330                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 7332                pm_buffer_append_byte(output_buffer, 
' ');
 
 7333                prettyprint_location(output_buffer, parser, location);
 
 7334                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7335                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7336                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7341        case PM_RATIONAL_NODE: {
 
 7343            pm_buffer_append_string(output_buffer, 
"@ RationalNode (location: ", 26);
 
 7344            prettyprint_location(output_buffer, parser, &node->
location);
 
 7345            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7349                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7350                pm_buffer_append_string(output_buffer, 
"+-- IntegerBaseFlags:", 21);
 
 7352                if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_BINARY) {
 
 7353                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7354                    pm_buffer_append_string(output_buffer, 
" binary", 7);
 
 7357                if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_DECIMAL) {
 
 7358                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7359                    pm_buffer_append_string(output_buffer, 
" decimal", 8);
 
 7362                if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_OCTAL) {
 
 7363                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7364                    pm_buffer_append_string(output_buffer, 
" octal", 6);
 
 7367                if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_HEXADECIMAL) {
 
 7368                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7369                    pm_buffer_append_string(output_buffer, 
" hexadecimal", 12);
 
 7372                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 7373                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7378                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7379                pm_buffer_append_string(output_buffer, 
"+-- numerator:", 14);
 
 7381                pm_buffer_append_byte(output_buffer, 
' ');
 
 7383                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7388                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7389                pm_buffer_append_string(output_buffer, 
"+-- denominator:", 16);
 
 7391                pm_buffer_append_byte(output_buffer, 
' ');
 
 7393                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7398        case PM_REDO_NODE: {
 
 7399            pm_buffer_append_string(output_buffer, 
"@ RedoNode (location: ", 22);
 
 7400            prettyprint_location(output_buffer, parser, &node->
location);
 
 7401            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7405        case PM_REGULAR_EXPRESSION_NODE: {
 
 7407            pm_buffer_append_string(output_buffer, 
"@ RegularExpressionNode (location: ", 35);
 
 7408            prettyprint_location(output_buffer, parser, &node->
location);
 
 7409            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7413                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7414                pm_buffer_append_string(output_buffer, 
"+-- RegularExpressionFlags:", 27);
 
 7416                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE) {
 
 7417                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7418                    pm_buffer_append_string(output_buffer, 
" ignore_case", 12);
 
 7421                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EXTENDED) {
 
 7422                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7423                    pm_buffer_append_string(output_buffer, 
" extended", 9);
 
 7426                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE) {
 
 7427                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7428                    pm_buffer_append_string(output_buffer, 
" multi_line", 11);
 
 7431                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ONCE) {
 
 7432                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7433                    pm_buffer_append_string(output_buffer, 
" once", 5);
 
 7436                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EUC_JP) {
 
 7437                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7438                    pm_buffer_append_string(output_buffer, 
" euc_jp", 7);
 
 7441                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT) {
 
 7442                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7443                    pm_buffer_append_string(output_buffer, 
" ascii_8bit", 11);
 
 7446                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J) {
 
 7447                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7448                    pm_buffer_append_string(output_buffer, 
" windows_31j", 12);
 
 7451                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_UTF_8) {
 
 7452                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7453                    pm_buffer_append_string(output_buffer, 
" utf_8", 6);
 
 7456                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING) {
 
 7457                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7458                    pm_buffer_append_string(output_buffer, 
" forced_utf8_encoding", 21);
 
 7461                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING) {
 
 7462                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7463                    pm_buffer_append_string(output_buffer, 
" forced_binary_encoding", 23);
 
 7466                if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING) {
 
 7467                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7468                    pm_buffer_append_string(output_buffer, 
" forced_us_ascii_encoding", 25);
 
 7471                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 7472                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7477                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7478                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 7480                pm_buffer_append_byte(output_buffer, 
' ');
 
 7481                prettyprint_location(output_buffer, parser, location);
 
 7482                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7483                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7484                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7489                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7490                pm_buffer_append_string(output_buffer, 
"+-- content_loc:", 16);
 
 7492                pm_buffer_append_byte(output_buffer, 
' ');
 
 7493                prettyprint_location(output_buffer, parser, location);
 
 7494                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7495                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7496                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7501                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7502                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 7504                pm_buffer_append_byte(output_buffer, 
' ');
 
 7505                prettyprint_location(output_buffer, parser, location);
 
 7506                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7507                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7508                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7513                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7514                pm_buffer_append_string(output_buffer, 
"+-- unescaped:", 14);
 
 7515                pm_buffer_append_string(output_buffer, 
" \"", 2);
 
 7517                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7522        case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
 
 7524            pm_buffer_append_string(output_buffer, 
"@ RequiredKeywordParameterNode (location: ", 42);
 
 7525            prettyprint_location(output_buffer, parser, &node->
location);
 
 7526            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7530                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7531                pm_buffer_append_string(output_buffer, 
"+-- ParameterFlags:", 19);
 
 7533                if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
 
 7534                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7535                    pm_buffer_append_string(output_buffer, 
" repeated_parameter", 19);
 
 7538                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 7539                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7544                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7545                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 7546                pm_buffer_append_byte(output_buffer, 
' ');
 
 7547                prettyprint_constant(output_buffer, parser, cast->
name);
 
 7548                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7553                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7554                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 7556                pm_buffer_append_byte(output_buffer, 
' ');
 
 7557                prettyprint_location(output_buffer, parser, location);
 
 7558                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7559                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7560                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7565        case PM_REQUIRED_PARAMETER_NODE: {
 
 7567            pm_buffer_append_string(output_buffer, 
"@ RequiredParameterNode (location: ", 35);
 
 7568            prettyprint_location(output_buffer, parser, &node->
location);
 
 7569            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7573                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7574                pm_buffer_append_string(output_buffer, 
"+-- ParameterFlags:", 19);
 
 7576                if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
 
 7577                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7578                    pm_buffer_append_string(output_buffer, 
" repeated_parameter", 19);
 
 7581                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 7582                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7587                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7588                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 7589                pm_buffer_append_byte(output_buffer, 
' ');
 
 7590                prettyprint_constant(output_buffer, parser, cast->
name);
 
 7591                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7596        case PM_RESCUE_MODIFIER_NODE: {
 
 7598            pm_buffer_append_string(output_buffer, 
"@ RescueModifierNode (location: ", 32);
 
 7599            prettyprint_location(output_buffer, parser, &node->
location);
 
 7600            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7604                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7605                pm_buffer_append_string(output_buffer, 
"+-- expression:", 15);
 
 7606                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7608                size_t prefix_length = prefix_buffer->
length;
 
 7609                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7610                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7612                prefix_buffer->
length = prefix_length;
 
 7617                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7618                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 7620                pm_buffer_append_byte(output_buffer, 
' ');
 
 7621                prettyprint_location(output_buffer, parser, location);
 
 7622                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7623                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7624                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7629                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7630                pm_buffer_append_string(output_buffer, 
"+-- rescue_expression:", 22);
 
 7631                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7633                size_t prefix_length = prefix_buffer->
length;
 
 7634                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 7635                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7637                prefix_buffer->
length = prefix_length;
 
 7642        case PM_RESCUE_NODE: {
 
 7644            pm_buffer_append_string(output_buffer, 
"@ RescueNode (location: ", 24);
 
 7645            prettyprint_location(output_buffer, parser, &node->
location);
 
 7646            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7650                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7651                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 7653                pm_buffer_append_byte(output_buffer, 
' ');
 
 7654                prettyprint_location(output_buffer, parser, location);
 
 7655                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7656                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7657                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7662                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7663                pm_buffer_append_string(output_buffer, 
"+-- exceptions:", 15);
 
 7664                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
exceptions.
size));
 
 7667                for (uint32_t index = 0; index < last_index; index++) {
 
 7668                    size_t prefix_length = prefix_buffer->
length;
 
 7669                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7670                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7671                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 7672                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 7674                    prefix_buffer->
length = prefix_length;
 
 7680                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7681                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 7683                if (location->
start == NULL) {
 
 7684                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7686                    pm_buffer_append_byte(output_buffer, 
' ');
 
 7687                    prettyprint_location(output_buffer, parser, location);
 
 7688                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7689                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7690                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7696                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7697                pm_buffer_append_string(output_buffer, 
"+-- reference:", 14);
 
 7699                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7701                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7703                    size_t prefix_length = prefix_buffer->
length;
 
 7704                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7705                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7706                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
reference, prefix_buffer);
 
 7707                    prefix_buffer->
length = prefix_length;
 
 7713                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7714                pm_buffer_append_string(output_buffer, 
"+-- then_keyword_loc:", 21);
 
 7716                if (location->
start == NULL) {
 
 7717                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7719                    pm_buffer_append_byte(output_buffer, 
' ');
 
 7720                    prettyprint_location(output_buffer, parser, location);
 
 7721                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7722                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7723                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7729                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7730                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 7732                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7734                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7736                    size_t prefix_length = prefix_buffer->
length;
 
 7737                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7738                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7740                    prefix_buffer->
length = prefix_length;
 
 7746                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7747                pm_buffer_append_string(output_buffer, 
"+-- subsequent:", 15);
 
 7749                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7751                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7753                    size_t prefix_length = prefix_buffer->
length;
 
 7754                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 7755                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7757                    prefix_buffer->
length = prefix_length;
 
 7763        case PM_REST_PARAMETER_NODE: {
 
 7765            pm_buffer_append_string(output_buffer, 
"@ RestParameterNode (location: ", 31);
 
 7766            prettyprint_location(output_buffer, parser, &node->
location);
 
 7767            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7771                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7772                pm_buffer_append_string(output_buffer, 
"+-- ParameterFlags:", 19);
 
 7774                if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
 
 7775                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7776                    pm_buffer_append_string(output_buffer, 
" repeated_parameter", 19);
 
 7779                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 7780                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7785                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7786                pm_buffer_append_string(output_buffer, 
"+-- name:", 9);
 
 7787                if (cast->
name == 0) {
 
 7788                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7790                    pm_buffer_append_byte(output_buffer, 
' ');
 
 7791                    prettyprint_constant(output_buffer, parser, cast->
name);
 
 7792                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7798                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7799                pm_buffer_append_string(output_buffer, 
"+-- name_loc:", 13);
 
 7801                if (location->
start == NULL) {
 
 7802                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7804                    pm_buffer_append_byte(output_buffer, 
' ');
 
 7805                    prettyprint_location(output_buffer, parser, location);
 
 7806                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7807                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7808                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7814                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7815                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 7817                pm_buffer_append_byte(output_buffer, 
' ');
 
 7818                prettyprint_location(output_buffer, parser, location);
 
 7819                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7820                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7821                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7826        case PM_RETRY_NODE: {
 
 7827            pm_buffer_append_string(output_buffer, 
"@ RetryNode (location: ", 23);
 
 7828            prettyprint_location(output_buffer, parser, &node->
location);
 
 7829            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7833        case PM_RETURN_NODE: {
 
 7835            pm_buffer_append_string(output_buffer, 
"@ ReturnNode (location: ", 24);
 
 7836            prettyprint_location(output_buffer, parser, &node->
location);
 
 7837            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7841                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7842                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 7844                pm_buffer_append_byte(output_buffer, 
' ');
 
 7845                prettyprint_location(output_buffer, parser, location);
 
 7846                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7847                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7848                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7853                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7854                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 7856                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7858                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7860                    size_t prefix_length = prefix_buffer->
length;
 
 7861                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 7862                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7863                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 7864                    prefix_buffer->
length = prefix_length;
 
 7870        case PM_SELF_NODE: {
 
 7871            pm_buffer_append_string(output_buffer, 
"@ SelfNode (location: ", 22);
 
 7872            prettyprint_location(output_buffer, parser, &node->
location);
 
 7873            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7877        case PM_SHAREABLE_CONSTANT_NODE: {
 
 7879            pm_buffer_append_string(output_buffer, 
"@ ShareableConstantNode (location: ", 35);
 
 7880            prettyprint_location(output_buffer, parser, &node->
location);
 
 7881            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7885                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7886                pm_buffer_append_string(output_buffer, 
"+-- ShareableConstantNodeFlags:", 31);
 
 7888                if (cast->
base.
flags & PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL) {
 
 7889                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7890                    pm_buffer_append_string(output_buffer, 
" literal", 8);
 
 7893                if (cast->
base.
flags & PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING) {
 
 7894                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7895                    pm_buffer_append_string(output_buffer, 
" experimental_everything", 24);
 
 7898                if (cast->
base.
flags & PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY) {
 
 7899                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 7900                    pm_buffer_append_string(output_buffer, 
" experimental_copy", 18);
 
 7903                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 7904                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7909                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7910                pm_buffer_append_string(output_buffer, 
"+-- write:", 10);
 
 7911                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7913                size_t prefix_length = prefix_buffer->
length;
 
 7914                pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 7915                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7916                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
write, prefix_buffer);
 
 7917                prefix_buffer->
length = prefix_length;
 
 7922        case PM_SINGLETON_CLASS_NODE: {
 
 7924            pm_buffer_append_string(output_buffer, 
"@ SingletonClassNode (location: ", 32);
 
 7925            prettyprint_location(output_buffer, parser, &node->
location);
 
 7926            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 7930                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7931                pm_buffer_append_string(output_buffer, 
"+-- locals:", 11);
 
 7932                pm_buffer_append_string(output_buffer, 
" [", 2);
 
 7933                for (uint32_t index = 0; index < cast->
locals.
size; index++) {
 
 7934                    if (index != 0) pm_buffer_append_string(output_buffer, 
", ", 2);
 
 7935                    prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
 
 7937                pm_buffer_append_string(output_buffer, 
"]\n", 2);
 
 7942                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7943                pm_buffer_append_string(output_buffer, 
"+-- class_keyword_loc:", 22);
 
 7945                pm_buffer_append_byte(output_buffer, 
' ');
 
 7946                prettyprint_location(output_buffer, parser, location);
 
 7947                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7948                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7949                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7954                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7955                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 7957                pm_buffer_append_byte(output_buffer, 
' ');
 
 7958                prettyprint_location(output_buffer, parser, location);
 
 7959                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 7960                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 7961                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 7966                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7967                pm_buffer_append_string(output_buffer, 
"+-- expression:", 15);
 
 7968                pm_buffer_append_byte(output_buffer, 
'\n');
 
 7970                size_t prefix_length = prefix_buffer->
length;
 
 7971                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7972                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7974                prefix_buffer->
length = prefix_length;
 
 7979                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7980                pm_buffer_append_string(output_buffer, 
"+-- body:", 9);
 
 7981                if (cast->
body == NULL) {
 
 7982                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 7984                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 7986                    size_t prefix_length = prefix_buffer->
length;
 
 7987                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 7988                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 7989                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
 
 7990                    prefix_buffer->
length = prefix_length;
 
 7996                pm_buffer_concat(output_buffer, prefix_buffer);
 
 7997                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 7999                pm_buffer_append_byte(output_buffer, 
' ');
 
 8000                prettyprint_location(output_buffer, parser, location);
 
 8001                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8002                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8003                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8008        case PM_SOURCE_ENCODING_NODE: {
 
 8009            pm_buffer_append_string(output_buffer, 
"@ SourceEncodingNode (location: ", 32);
 
 8010            prettyprint_location(output_buffer, parser, &node->
location);
 
 8011            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8015        case PM_SOURCE_FILE_NODE: {
 
 8017            pm_buffer_append_string(output_buffer, 
"@ SourceFileNode (location: ", 28);
 
 8018            prettyprint_location(output_buffer, parser, &node->
location);
 
 8019            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8023                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8024                pm_buffer_append_string(output_buffer, 
"+-- StringFlags:", 16);
 
 8026                if (cast->
base.
flags & PM_STRING_FLAGS_FORCED_UTF8_ENCODING) {
 
 8027                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8028                    pm_buffer_append_string(output_buffer, 
" forced_utf8_encoding", 21);
 
 8031                if (cast->
base.
flags & PM_STRING_FLAGS_FORCED_BINARY_ENCODING) {
 
 8032                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8033                    pm_buffer_append_string(output_buffer, 
" forced_binary_encoding", 23);
 
 8036                if (cast->
base.
flags & PM_STRING_FLAGS_FROZEN) {
 
 8037                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8038                    pm_buffer_append_string(output_buffer, 
" frozen", 7);
 
 8041                if (cast->
base.
flags & PM_STRING_FLAGS_MUTABLE) {
 
 8042                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8043                    pm_buffer_append_string(output_buffer, 
" mutable", 8);
 
 8046                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 8047                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8052                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8053                pm_buffer_append_string(output_buffer, 
"+-- filepath:", 13);
 
 8054                pm_buffer_append_string(output_buffer, 
" \"", 2);
 
 8056                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8061        case PM_SOURCE_LINE_NODE: {
 
 8062            pm_buffer_append_string(output_buffer, 
"@ SourceLineNode (location: ", 28);
 
 8063            prettyprint_location(output_buffer, parser, &node->
location);
 
 8064            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8068        case PM_SPLAT_NODE: {
 
 8070            pm_buffer_append_string(output_buffer, 
"@ SplatNode (location: ", 23);
 
 8071            prettyprint_location(output_buffer, parser, &node->
location);
 
 8072            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8076                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8077                pm_buffer_append_string(output_buffer, 
"+-- operator_loc:", 17);
 
 8079                pm_buffer_append_byte(output_buffer, 
' ');
 
 8080                prettyprint_location(output_buffer, parser, location);
 
 8081                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8082                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8083                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8088                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8089                pm_buffer_append_string(output_buffer, 
"+-- expression:", 15);
 
 8091                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8093                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8095                    size_t prefix_length = prefix_buffer->
length;
 
 8096                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 8097                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8099                    prefix_buffer->
length = prefix_length;
 
 8105        case PM_STATEMENTS_NODE: {
 
 8107            pm_buffer_append_string(output_buffer, 
"@ StatementsNode (location: ", 28);
 
 8108            prettyprint_location(output_buffer, parser, &node->
location);
 
 8109            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8113                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8114                pm_buffer_append_string(output_buffer, 
"+-- body:", 9);
 
 8115                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
body.
size));
 
 8117                size_t last_index = cast->
body.
size;
 
 8118                for (uint32_t index = 0; index < last_index; index++) {
 
 8119                    size_t prefix_length = prefix_buffer->
length;
 
 8120                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 8121                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8122                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 8123                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 8124                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body.
nodes[index], prefix_buffer);
 
 8125                    prefix_buffer->
length = prefix_length;
 
 8131        case PM_STRING_NODE: {
 
 8133            pm_buffer_append_string(output_buffer, 
"@ StringNode (location: ", 24);
 
 8134            prettyprint_location(output_buffer, parser, &node->
location);
 
 8135            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8139                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8140                pm_buffer_append_string(output_buffer, 
"+-- StringFlags:", 16);
 
 8142                if (cast->
base.
flags & PM_STRING_FLAGS_FORCED_UTF8_ENCODING) {
 
 8143                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8144                    pm_buffer_append_string(output_buffer, 
" forced_utf8_encoding", 21);
 
 8147                if (cast->
base.
flags & PM_STRING_FLAGS_FORCED_BINARY_ENCODING) {
 
 8148                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8149                    pm_buffer_append_string(output_buffer, 
" forced_binary_encoding", 23);
 
 8152                if (cast->
base.
flags & PM_STRING_FLAGS_FROZEN) {
 
 8153                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8154                    pm_buffer_append_string(output_buffer, 
" frozen", 7);
 
 8157                if (cast->
base.
flags & PM_STRING_FLAGS_MUTABLE) {
 
 8158                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8159                    pm_buffer_append_string(output_buffer, 
" mutable", 8);
 
 8162                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 8163                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8168                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8169                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 8171                if (location->
start == NULL) {
 
 8172                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8174                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8175                    prettyprint_location(output_buffer, parser, location);
 
 8176                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8177                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8178                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8184                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8185                pm_buffer_append_string(output_buffer, 
"+-- content_loc:", 16);
 
 8187                pm_buffer_append_byte(output_buffer, 
' ');
 
 8188                prettyprint_location(output_buffer, parser, location);
 
 8189                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8190                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8191                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8196                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8197                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 8199                if (location->
start == NULL) {
 
 8200                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8202                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8203                    prettyprint_location(output_buffer, parser, location);
 
 8204                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8205                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8206                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8212                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8213                pm_buffer_append_string(output_buffer, 
"+-- unescaped:", 14);
 
 8214                pm_buffer_append_string(output_buffer, 
" \"", 2);
 
 8216                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8221        case PM_SUPER_NODE: {
 
 8223            pm_buffer_append_string(output_buffer, 
"@ SuperNode (location: ", 23);
 
 8224            prettyprint_location(output_buffer, parser, &node->
location);
 
 8225            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8229                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8230                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 8232                pm_buffer_append_byte(output_buffer, 
' ');
 
 8233                prettyprint_location(output_buffer, parser, location);
 
 8234                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8235                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8236                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8241                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8242                pm_buffer_append_string(output_buffer, 
"+-- lparen_loc:", 15);
 
 8244                if (location->
start == NULL) {
 
 8245                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8247                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8248                    prettyprint_location(output_buffer, parser, location);
 
 8249                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8250                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8251                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8257                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8258                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 8260                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8262                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8264                    size_t prefix_length = prefix_buffer->
length;
 
 8265                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8266                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8267                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 8268                    prefix_buffer->
length = prefix_length;
 
 8274                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8275                pm_buffer_append_string(output_buffer, 
"+-- rparen_loc:", 15);
 
 8277                if (location->
start == NULL) {
 
 8278                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8280                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8281                    prettyprint_location(output_buffer, parser, location);
 
 8282                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8283                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8284                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8290                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8291                pm_buffer_append_string(output_buffer, 
"+-- block:", 10);
 
 8292                if (cast->
block == NULL) {
 
 8293                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8295                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8297                    size_t prefix_length = prefix_buffer->
length;
 
 8298                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 8299                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8300                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
 
 8301                    prefix_buffer->
length = prefix_length;
 
 8307        case PM_SYMBOL_NODE: {
 
 8309            pm_buffer_append_string(output_buffer, 
"@ SymbolNode (location: ", 24);
 
 8310            prettyprint_location(output_buffer, parser, &node->
location);
 
 8311            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8315                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8316                pm_buffer_append_string(output_buffer, 
"+-- SymbolFlags:", 16);
 
 8318                if (cast->
base.
flags & PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING) {
 
 8319                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8320                    pm_buffer_append_string(output_buffer, 
" forced_utf8_encoding", 21);
 
 8323                if (cast->
base.
flags & PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING) {
 
 8324                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8325                    pm_buffer_append_string(output_buffer, 
" forced_binary_encoding", 23);
 
 8328                if (cast->
base.
flags & PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING) {
 
 8329                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8330                    pm_buffer_append_string(output_buffer, 
" forced_us_ascii_encoding", 25);
 
 8333                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 8334                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8339                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8340                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 8342                if (location->
start == NULL) {
 
 8343                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8345                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8346                    prettyprint_location(output_buffer, parser, location);
 
 8347                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8348                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8349                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8355                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8356                pm_buffer_append_string(output_buffer, 
"+-- value_loc:", 14);
 
 8358                if (location->
start == NULL) {
 
 8359                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8361                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8362                    prettyprint_location(output_buffer, parser, location);
 
 8363                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8364                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8365                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8371                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8372                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 8374                if (location->
start == NULL) {
 
 8375                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8377                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8378                    prettyprint_location(output_buffer, parser, location);
 
 8379                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8380                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8381                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8387                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8388                pm_buffer_append_string(output_buffer, 
"+-- unescaped:", 14);
 
 8389                pm_buffer_append_string(output_buffer, 
" \"", 2);
 
 8391                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8396        case PM_TRUE_NODE: {
 
 8397            pm_buffer_append_string(output_buffer, 
"@ TrueNode (location: ", 22);
 
 8398            prettyprint_location(output_buffer, parser, &node->
location);
 
 8399            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8403        case PM_UNDEF_NODE: {
 
 8405            pm_buffer_append_string(output_buffer, 
"@ UndefNode (location: ", 23);
 
 8406            prettyprint_location(output_buffer, parser, &node->
location);
 
 8407            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8411                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8412                pm_buffer_append_string(output_buffer, 
"+-- names:", 10);
 
 8413                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
names.
size));
 
 8416                for (uint32_t index = 0; index < last_index; index++) {
 
 8417                    size_t prefix_length = prefix_buffer->
length;
 
 8418                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8419                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8420                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 8421                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 8422                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
names.
nodes[index], prefix_buffer);
 
 8423                    prefix_buffer->
length = prefix_length;
 
 8429                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8430                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 8432                pm_buffer_append_byte(output_buffer, 
' ');
 
 8433                prettyprint_location(output_buffer, parser, location);
 
 8434                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8435                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8436                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8441        case PM_UNLESS_NODE: {
 
 8443            pm_buffer_append_string(output_buffer, 
"@ UnlessNode (location: ", 24);
 
 8444            prettyprint_location(output_buffer, parser, &node->
location);
 
 8445            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8449                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8450                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 8452                pm_buffer_append_byte(output_buffer, 
' ');
 
 8453                prettyprint_location(output_buffer, parser, location);
 
 8454                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8455                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8456                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8461                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8462                pm_buffer_append_string(output_buffer, 
"+-- predicate:", 14);
 
 8463                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8465                size_t prefix_length = prefix_buffer->
length;
 
 8466                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8467                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8468                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
 
 8469                prefix_buffer->
length = prefix_length;
 
 8474                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8475                pm_buffer_append_string(output_buffer, 
"+-- then_keyword_loc:", 21);
 
 8477                if (location->
start == NULL) {
 
 8478                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8480                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8481                    prettyprint_location(output_buffer, parser, location);
 
 8482                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8483                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8484                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8490                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8491                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 8493                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8495                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8497                    size_t prefix_length = prefix_buffer->
length;
 
 8498                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8499                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8501                    prefix_buffer->
length = prefix_length;
 
 8507                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8508                pm_buffer_append_string(output_buffer, 
"+-- else_clause:", 16);
 
 8510                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8512                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8514                    size_t prefix_length = prefix_buffer->
length;
 
 8515                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8516                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8518                    prefix_buffer->
length = prefix_length;
 
 8524                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8525                pm_buffer_append_string(output_buffer, 
"+-- end_keyword_loc:", 20);
 
 8527                if (location->
start == NULL) {
 
 8528                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8530                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8531                    prettyprint_location(output_buffer, parser, location);
 
 8532                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8533                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8534                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8540        case PM_UNTIL_NODE: {
 
 8542            pm_buffer_append_string(output_buffer, 
"@ UntilNode (location: ", 23);
 
 8543            prettyprint_location(output_buffer, parser, &node->
location);
 
 8544            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8548                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8549                pm_buffer_append_string(output_buffer, 
"+-- LoopFlags:", 14);
 
 8551                if (cast->
base.
flags & PM_LOOP_FLAGS_BEGIN_MODIFIER) {
 
 8552                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8553                    pm_buffer_append_string(output_buffer, 
" begin_modifier", 15);
 
 8556                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 8557                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8562                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8563                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 8565                pm_buffer_append_byte(output_buffer, 
' ');
 
 8566                prettyprint_location(output_buffer, parser, location);
 
 8567                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8568                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8569                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8574                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8575                pm_buffer_append_string(output_buffer, 
"+-- do_keyword_loc:", 19);
 
 8577                if (location->
start == NULL) {
 
 8578                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8580                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8581                    prettyprint_location(output_buffer, parser, location);
 
 8582                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8583                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8584                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8590                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8591                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 8593                if (location->
start == NULL) {
 
 8594                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8596                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8597                    prettyprint_location(output_buffer, parser, location);
 
 8598                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8599                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8600                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8606                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8607                pm_buffer_append_string(output_buffer, 
"+-- predicate:", 14);
 
 8608                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8610                size_t prefix_length = prefix_buffer->
length;
 
 8611                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8612                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8613                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
 
 8614                prefix_buffer->
length = prefix_length;
 
 8619                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8620                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 8622                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8624                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8626                    size_t prefix_length = prefix_buffer->
length;
 
 8627                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 8628                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8630                    prefix_buffer->
length = prefix_length;
 
 8636        case PM_WHEN_NODE: {
 
 8638            pm_buffer_append_string(output_buffer, 
"@ WhenNode (location: ", 22);
 
 8639            prettyprint_location(output_buffer, parser, &node->
location);
 
 8640            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8644                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8645                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 8647                pm_buffer_append_byte(output_buffer, 
' ');
 
 8648                prettyprint_location(output_buffer, parser, location);
 
 8649                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8650                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8651                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8656                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8657                pm_buffer_append_string(output_buffer, 
"+-- conditions:", 15);
 
 8658                pm_buffer_append_format(output_buffer, 
" (length: %lu)\n", (
unsigned long) (cast->
conditions.
size));
 
 8661                for (uint32_t index = 0; index < last_index; index++) {
 
 8662                    size_t prefix_length = prefix_buffer->
length;
 
 8663                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8664                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8665                    pm_buffer_append_string(output_buffer, 
"+-- ", 4);
 
 8666                    pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ? 
"    " : 
"|   ", 4);
 
 8668                    prefix_buffer->
length = prefix_length;
 
 8674                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8675                pm_buffer_append_string(output_buffer, 
"+-- then_keyword_loc:", 21);
 
 8677                if (location->
start == NULL) {
 
 8678                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8680                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8681                    prettyprint_location(output_buffer, parser, location);
 
 8682                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8683                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8684                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8690                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8691                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 8693                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8695                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8697                    size_t prefix_length = prefix_buffer->
length;
 
 8698                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 8699                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8701                    prefix_buffer->
length = prefix_length;
 
 8707        case PM_WHILE_NODE: {
 
 8709            pm_buffer_append_string(output_buffer, 
"@ WhileNode (location: ", 23);
 
 8710            prettyprint_location(output_buffer, parser, &node->
location);
 
 8711            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8715                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8716                pm_buffer_append_string(output_buffer, 
"+-- LoopFlags:", 14);
 
 8718                if (cast->
base.
flags & PM_LOOP_FLAGS_BEGIN_MODIFIER) {
 
 8719                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8720                    pm_buffer_append_string(output_buffer, 
" begin_modifier", 15);
 
 8723                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 8724                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8729                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8730                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 8732                pm_buffer_append_byte(output_buffer, 
' ');
 
 8733                prettyprint_location(output_buffer, parser, location);
 
 8734                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8735                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8736                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8741                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8742                pm_buffer_append_string(output_buffer, 
"+-- do_keyword_loc:", 19);
 
 8744                if (location->
start == NULL) {
 
 8745                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8747                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8748                    prettyprint_location(output_buffer, parser, location);
 
 8749                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8750                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8751                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8757                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8758                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 8760                if (location->
start == NULL) {
 
 8761                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8763                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8764                    prettyprint_location(output_buffer, parser, location);
 
 8765                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8766                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8767                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8773                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8774                pm_buffer_append_string(output_buffer, 
"+-- predicate:", 14);
 
 8775                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8777                size_t prefix_length = prefix_buffer->
length;
 
 8778                pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8779                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8780                prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
 
 8781                prefix_buffer->
length = prefix_length;
 
 8786                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8787                pm_buffer_append_string(output_buffer, 
"+-- statements:", 15);
 
 8789                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8791                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8793                    size_t prefix_length = prefix_buffer->
length;
 
 8794                    pm_buffer_append_string(prefix_buffer, 
"    ", 4);
 
 8795                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8797                    prefix_buffer->
length = prefix_length;
 
 8803        case PM_X_STRING_NODE: {
 
 8805            pm_buffer_append_string(output_buffer, 
"@ XStringNode (location: ", 25);
 
 8806            prettyprint_location(output_buffer, parser, &node->
location);
 
 8807            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8811                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8812                pm_buffer_append_string(output_buffer, 
"+-- EncodingFlags:", 18);
 
 8814                if (cast->
base.
flags & PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING) {
 
 8815                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8816                    pm_buffer_append_string(output_buffer, 
" forced_utf8_encoding", 21);
 
 8819                if (cast->
base.
flags & PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING) {
 
 8820                    if (found) pm_buffer_append_byte(output_buffer, 
',');
 
 8821                    pm_buffer_append_string(output_buffer, 
" forced_binary_encoding", 23);
 
 8824                if (!found) pm_buffer_append_string(output_buffer, 
" nil", 4);
 
 8825                pm_buffer_append_byte(output_buffer, 
'\n');
 
 8830                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8831                pm_buffer_append_string(output_buffer, 
"+-- opening_loc:", 16);
 
 8833                pm_buffer_append_byte(output_buffer, 
' ');
 
 8834                prettyprint_location(output_buffer, parser, location);
 
 8835                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8836                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8837                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8842                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8843                pm_buffer_append_string(output_buffer, 
"+-- content_loc:", 16);
 
 8845                pm_buffer_append_byte(output_buffer, 
' ');
 
 8846                prettyprint_location(output_buffer, parser, location);
 
 8847                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8848                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8849                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8854                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8855                pm_buffer_append_string(output_buffer, 
"+-- closing_loc:", 16);
 
 8857                pm_buffer_append_byte(output_buffer, 
' ');
 
 8858                prettyprint_location(output_buffer, parser, location);
 
 8859                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8860                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8861                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8866                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8867                pm_buffer_append_string(output_buffer, 
"+-- unescaped:", 14);
 
 8868                pm_buffer_append_string(output_buffer, 
" \"", 2);
 
 8870                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8875        case PM_YIELD_NODE: {
 
 8877            pm_buffer_append_string(output_buffer, 
"@ YieldNode (location: ", 23);
 
 8878            prettyprint_location(output_buffer, parser, &node->
location);
 
 8879            pm_buffer_append_string(output_buffer, 
")\n", 2);
 
 8883                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8884                pm_buffer_append_string(output_buffer, 
"+-- keyword_loc:", 16);
 
 8886                pm_buffer_append_byte(output_buffer, 
' ');
 
 8887                prettyprint_location(output_buffer, parser, location);
 
 8888                pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8889                pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8890                pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8895                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8896                pm_buffer_append_string(output_buffer, 
"+-- lparen_loc:", 15);
 
 8898                if (location->
start == NULL) {
 
 8899                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8901                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8902                    prettyprint_location(output_buffer, parser, location);
 
 8903                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8904                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8905                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8911                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8912                pm_buffer_append_string(output_buffer, 
"+-- arguments:", 14);
 
 8914                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8916                    pm_buffer_append_byte(output_buffer, 
'\n');
 
 8918                    size_t prefix_length = prefix_buffer->
length;
 
 8919                    pm_buffer_append_string(prefix_buffer, 
"|   ", 4);
 
 8920                    pm_buffer_concat(output_buffer, prefix_buffer);
 
 8921                    prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
 
 8922                    prefix_buffer->
length = prefix_length;
 
 8928                pm_buffer_concat(output_buffer, prefix_buffer);
 
 8929                pm_buffer_append_string(output_buffer, 
"+-- rparen_loc:", 15);
 
 8931                if (location->
start == NULL) {
 
 8932                    pm_buffer_append_string(output_buffer, 
" nil\n", 5);
 
 8934                    pm_buffer_append_byte(output_buffer, 
' ');
 
 8935                    prettyprint_location(output_buffer, parser, location);
 
 8936                    pm_buffer_append_string(output_buffer, 
" = \"", 4);
 
 8937                    pm_buffer_append_source(output_buffer, location->
start, (
size_t) (location->
end - location->
start), PM_BUFFER_ESCAPING_RUBY);
 
 8938                    pm_buffer_append_string(output_buffer, 
"\"\n", 2);
 
 8953    prettyprint_node(output_buffer, parser, node, &prefix_buffer);
 
 
void pm_buffer_free(pm_buffer_t *buffer)
Free the memory associated with the buffer.
uint32_t pm_constant_id_t
A constant id is a unique identifier for a constant in the constant pool.
PRISM_EXPORTED_FUNCTION void pm_integer_string(pm_buffer_t *buffer, const pm_integer_t *integer)
Convert an integer to a decimal string.
PRISM_EXPORTED_FUNCTION size_t pm_string_length(const pm_string_t *string)
Returns the length associated with the string.
PRISM_EXPORTED_FUNCTION const uint8_t * pm_string_source(const pm_string_t *string)
Returns the start pointer associated with the string.
An AST node pretty-printer.
#define PRISM_EXPORTED_FUNCTION
By default, we compile with -fvisibility=hidden.
struct pm_node * old_name
AliasGlobalVariableNode::old_name.
struct pm_node * new_name
AliasGlobalVariableNode::new_name.
pm_location_t keyword_loc
AliasGlobalVariableNode::keyword_loc.
struct pm_node * old_name
AliasMethodNode::old_name.
struct pm_node * new_name
AliasMethodNode::new_name.
pm_location_t keyword_loc
AliasMethodNode::keyword_loc.
pm_location_t operator_loc
AlternationPatternNode::operator_loc.
struct pm_node * left
AlternationPatternNode::left.
struct pm_node * right
AlternationPatternNode::right.
struct pm_node * left
AndNode::left.
struct pm_node * right
AndNode::right.
pm_location_t operator_loc
AndNode::operator_loc.
pm_node_t base
The embedded base node.
struct pm_node_list arguments
ArgumentsNode::arguments.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
ArrayNode::closing_loc.
struct pm_node_list elements
ArrayNode::elements.
pm_location_t opening_loc
ArrayNode::opening_loc.
struct pm_node_list requireds
ArrayPatternNode::requireds.
struct pm_node * rest
ArrayPatternNode::rest.
struct pm_node * constant
ArrayPatternNode::constant.
pm_location_t opening_loc
ArrayPatternNode::opening_loc.
pm_location_t closing_loc
ArrayPatternNode::closing_loc.
struct pm_node_list posts
ArrayPatternNode::posts.
struct pm_node * value
AssocNode::value.
struct pm_node * key
AssocNode::key.
pm_location_t operator_loc
AssocNode::operator_loc.
struct pm_node * value
AssocSplatNode::value.
pm_location_t operator_loc
AssocSplatNode::operator_loc.
pm_constant_id_t name
BackReferenceReadNode::name.
struct pm_ensure_node * ensure_clause
BeginNode::ensure_clause.
struct pm_rescue_node * rescue_clause
BeginNode::rescue_clause.
struct pm_statements_node * statements
BeginNode::statements.
pm_location_t end_keyword_loc
BeginNode::end_keyword_loc.
pm_location_t begin_keyword_loc
BeginNode::begin_keyword_loc.
struct pm_else_node * else_clause
BeginNode::else_clause.
struct pm_node * expression
BlockArgumentNode::expression.
pm_location_t operator_loc
BlockArgumentNode::operator_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
BlockLocalVariableNode::name.
pm_location_t closing_loc
BlockNode::closing_loc.
struct pm_node * parameters
BlockNode::parameters.
pm_location_t opening_loc
BlockNode::opening_loc.
struct pm_node * body
BlockNode::body.
pm_constant_id_list_t locals
BlockNode::locals.
pm_location_t operator_loc
BlockParameterNode::operator_loc.
pm_location_t name_loc
BlockParameterNode::name_loc.
pm_constant_id_t name
BlockParameterNode::name.
pm_node_t base
The embedded base node.
struct pm_parameters_node * parameters
BlockParametersNode::parameters.
struct pm_node_list locals
BlockParametersNode::locals.
pm_location_t closing_loc
BlockParametersNode::closing_loc.
pm_location_t opening_loc
BlockParametersNode::opening_loc.
struct pm_arguments_node * arguments
BreakNode::arguments.
pm_location_t keyword_loc
BreakNode::keyword_loc.
A pm_buffer_t is a simple memory buffer that stores data in a contiguous block of memory.
size_t length
The length of the buffer in bytes.
pm_location_t operator_loc
CallAndWriteNode::operator_loc.
struct pm_node * value
CallAndWriteNode::value.
pm_node_t base
The embedded base node.
pm_location_t call_operator_loc
CallAndWriteNode::call_operator_loc.
pm_location_t message_loc
CallAndWriteNode::message_loc.
pm_constant_id_t read_name
CallAndWriteNode::read_name.
pm_constant_id_t write_name
CallAndWriteNode::write_name.
struct pm_node * receiver
CallAndWriteNode::receiver.
pm_location_t opening_loc
CallNode::opening_loc.
pm_location_t closing_loc
CallNode::closing_loc.
struct pm_node * receiver
CallNode::receiver.
pm_constant_id_t name
CallNode::name.
pm_node_t base
The embedded base node.
pm_location_t equal_loc
CallNode::equal_loc.
pm_location_t call_operator_loc
CallNode::call_operator_loc.
pm_location_t message_loc
CallNode::message_loc.
struct pm_arguments_node * arguments
CallNode::arguments.
struct pm_node * block
CallNode::block.
pm_constant_id_t read_name
CallOperatorWriteNode::read_name.
pm_constant_id_t binary_operator
CallOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
CallOperatorWriteNode::binary_operator_loc.
struct pm_node * receiver
CallOperatorWriteNode::receiver.
pm_node_t base
The embedded base node.
pm_constant_id_t write_name
CallOperatorWriteNode::write_name.
pm_location_t message_loc
CallOperatorWriteNode::message_loc.
struct pm_node * value
CallOperatorWriteNode::value.
pm_location_t call_operator_loc
CallOperatorWriteNode::call_operator_loc.
pm_location_t operator_loc
CallOrWriteNode::operator_loc.
pm_location_t call_operator_loc
CallOrWriteNode::call_operator_loc.
pm_node_t base
The embedded base node.
struct pm_node * receiver
CallOrWriteNode::receiver.
struct pm_node * value
CallOrWriteNode::value.
pm_constant_id_t write_name
CallOrWriteNode::write_name.
pm_constant_id_t read_name
CallOrWriteNode::read_name.
pm_location_t message_loc
CallOrWriteNode::message_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
CallTargetNode::name.
struct pm_node * receiver
CallTargetNode::receiver.
pm_location_t call_operator_loc
CallTargetNode::call_operator_loc.
pm_location_t message_loc
CallTargetNode::message_loc.
struct pm_local_variable_target_node * target
CapturePatternNode::target.
pm_location_t operator_loc
CapturePatternNode::operator_loc.
struct pm_node * value
CapturePatternNode::value.
pm_location_t end_keyword_loc
CaseMatchNode::end_keyword_loc.
struct pm_node_list conditions
CaseMatchNode::conditions.
pm_location_t case_keyword_loc
CaseMatchNode::case_keyword_loc.
struct pm_else_node * else_clause
CaseMatchNode::else_clause.
struct pm_node * predicate
CaseMatchNode::predicate.
struct pm_node * predicate
CaseNode::predicate.
struct pm_else_node * else_clause
CaseNode::else_clause.
struct pm_node_list conditions
CaseNode::conditions.
pm_location_t case_keyword_loc
CaseNode::case_keyword_loc.
pm_location_t end_keyword_loc
CaseNode::end_keyword_loc.
pm_location_t class_keyword_loc
ClassNode::class_keyword_loc.
pm_location_t end_keyword_loc
ClassNode::end_keyword_loc.
struct pm_node * constant_path
ClassNode::constant_path.
pm_constant_id_list_t locals
ClassNode::locals.
pm_location_t inheritance_operator_loc
ClassNode::inheritance_operator_loc.
pm_constant_id_t name
ClassNode::name.
struct pm_node * body
ClassNode::body.
struct pm_node * superclass
ClassNode::superclass.
ClassVariableAndWriteNode.
struct pm_node * value
ClassVariableAndWriteNode::value.
pm_constant_id_t name
ClassVariableAndWriteNode::name.
pm_location_t operator_loc
ClassVariableAndWriteNode::operator_loc.
pm_location_t name_loc
ClassVariableAndWriteNode::name_loc.
ClassVariableOperatorWriteNode.
pm_constant_id_t name
ClassVariableOperatorWriteNode::name.
pm_location_t name_loc
ClassVariableOperatorWriteNode::name_loc.
pm_constant_id_t binary_operator
ClassVariableOperatorWriteNode::binary_operator.
struct pm_node * value
ClassVariableOperatorWriteNode::value.
pm_location_t binary_operator_loc
ClassVariableOperatorWriteNode::binary_operator_loc.
ClassVariableOrWriteNode.
pm_location_t name_loc
ClassVariableOrWriteNode::name_loc.
pm_location_t operator_loc
ClassVariableOrWriteNode::operator_loc.
pm_constant_id_t name
ClassVariableOrWriteNode::name.
struct pm_node * value
ClassVariableOrWriteNode::value.
pm_constant_id_t name
ClassVariableReadNode::name.
pm_constant_id_t name
ClassVariableTargetNode::name.
pm_location_t name_loc
ClassVariableWriteNode::name_loc.
struct pm_node * value
ClassVariableWriteNode::value.
pm_location_t operator_loc
ClassVariableWriteNode::operator_loc.
pm_constant_id_t name
ClassVariableWriteNode::name.
pm_location_t operator_loc
ConstantAndWriteNode::operator_loc.
pm_location_t name_loc
ConstantAndWriteNode::name_loc.
pm_constant_id_t name
ConstantAndWriteNode::name.
struct pm_node * value
ConstantAndWriteNode::value.
size_t size
The number of constant ids in the list.
pm_constant_id_t * ids
The constant ids in the list.
ConstantOperatorWriteNode.
pm_constant_id_t name
ConstantOperatorWriteNode::name.
pm_location_t name_loc
ConstantOperatorWriteNode::name_loc.
pm_constant_id_t binary_operator
ConstantOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
ConstantOperatorWriteNode::binary_operator_loc.
struct pm_node * value
ConstantOperatorWriteNode::value.
pm_location_t operator_loc
ConstantOrWriteNode::operator_loc.
pm_location_t name_loc
ConstantOrWriteNode::name_loc.
pm_constant_id_t name
ConstantOrWriteNode::name.
struct pm_node * value
ConstantOrWriteNode::value.
ConstantPathAndWriteNode.
struct pm_constant_path_node * target
ConstantPathAndWriteNode::target.
pm_location_t operator_loc
ConstantPathAndWriteNode::operator_loc.
struct pm_node * value
ConstantPathAndWriteNode::value.
pm_location_t delimiter_loc
ConstantPathNode::delimiter_loc.
pm_location_t name_loc
ConstantPathNode::name_loc.
pm_constant_id_t name
ConstantPathNode::name.
struct pm_node * parent
ConstantPathNode::parent.
ConstantPathOperatorWriteNode.
struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
struct pm_node * value
ConstantPathOperatorWriteNode::value.
pm_constant_id_t binary_operator
ConstantPathOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
ConstantPathOperatorWriteNode::binary_operator_loc.
pm_location_t operator_loc
ConstantPathOrWriteNode::operator_loc.
struct pm_node * value
ConstantPathOrWriteNode::value.
struct pm_constant_path_node * target
ConstantPathOrWriteNode::target.
struct pm_node * parent
ConstantPathTargetNode::parent.
pm_location_t delimiter_loc
ConstantPathTargetNode::delimiter_loc.
pm_constant_id_t name
ConstantPathTargetNode::name.
pm_location_t name_loc
ConstantPathTargetNode::name_loc.
struct pm_constant_path_node * target
ConstantPathWriteNode::target.
pm_location_t operator_loc
ConstantPathWriteNode::operator_loc.
struct pm_node * value
ConstantPathWriteNode::value.
pm_constant_id_t name
ConstantReadNode::name.
A constant in the pool which effectively stores a string.
size_t length
The length of the string.
const uint8_t * start
A pointer to the start of the string.
pm_constant_id_t name
ConstantTargetNode::name.
struct pm_node * value
ConstantWriteNode::value.
pm_constant_id_t name
ConstantWriteNode::name.
pm_location_t name_loc
ConstantWriteNode::name_loc.
pm_location_t operator_loc
ConstantWriteNode::operator_loc.
struct pm_parameters_node * parameters
DefNode::parameters.
pm_location_t end_keyword_loc
DefNode::end_keyword_loc.
pm_constant_id_t name
DefNode::name.
pm_location_t name_loc
DefNode::name_loc.
pm_location_t rparen_loc
DefNode::rparen_loc.
struct pm_node * body
DefNode::body.
pm_location_t equal_loc
DefNode::equal_loc.
pm_location_t def_keyword_loc
DefNode::def_keyword_loc.
struct pm_node * receiver
DefNode::receiver.
pm_location_t lparen_loc
DefNode::lparen_loc.
pm_location_t operator_loc
DefNode::operator_loc.
pm_constant_id_list_t locals
DefNode::locals.
pm_location_t lparen_loc
DefinedNode::lparen_loc.
pm_location_t rparen_loc
DefinedNode::rparen_loc.
pm_location_t keyword_loc
DefinedNode::keyword_loc.
struct pm_node * value
DefinedNode::value.
struct pm_statements_node * statements
ElseNode::statements.
pm_location_t else_keyword_loc
ElseNode::else_keyword_loc.
pm_location_t end_keyword_loc
ElseNode::end_keyword_loc.
pm_location_t closing_loc
EmbeddedStatementsNode::closing_loc.
struct pm_statements_node * statements
EmbeddedStatementsNode::statements.
pm_location_t opening_loc
EmbeddedStatementsNode::opening_loc.
struct pm_node * variable
EmbeddedVariableNode::variable.
pm_location_t operator_loc
EmbeddedVariableNode::operator_loc.
struct pm_statements_node * statements
EnsureNode::statements.
pm_location_t ensure_keyword_loc
EnsureNode::ensure_keyword_loc.
pm_location_t end_keyword_loc
EnsureNode::end_keyword_loc.
struct pm_node * constant
FindPatternNode::constant.
struct pm_node * right
FindPatternNode::right.
pm_location_t opening_loc
FindPatternNode::opening_loc.
struct pm_node_list requireds
FindPatternNode::requireds.
struct pm_splat_node * left
FindPatternNode::left.
pm_location_t closing_loc
FindPatternNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
FlipFlopNode::operator_loc.
struct pm_node * left
FlipFlopNode::left.
struct pm_node * right
FlipFlopNode::right.
double value
FloatNode::value.
struct pm_statements_node * statements
ForNode::statements.
struct pm_node * index
ForNode::index.
struct pm_node * collection
ForNode::collection.
pm_location_t end_keyword_loc
ForNode::end_keyword_loc.
pm_location_t for_keyword_loc
ForNode::for_keyword_loc.
pm_location_t do_keyword_loc
ForNode::do_keyword_loc.
pm_location_t in_keyword_loc
ForNode::in_keyword_loc.
struct pm_block_node * block
ForwardingSuperNode::block.
GlobalVariableAndWriteNode.
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
struct pm_node * value
GlobalVariableAndWriteNode::value.
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
GlobalVariableOperatorWriteNode.
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
struct pm_node * value
GlobalVariableOperatorWriteNode::value.
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
GlobalVariableOrWriteNode.
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
struct pm_node * value
GlobalVariableOrWriteNode::value.
pm_constant_id_t name
GlobalVariableReadNode::name.
GlobalVariableTargetNode.
pm_constant_id_t name
GlobalVariableTargetNode::name.
struct pm_node * value
GlobalVariableWriteNode::value.
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
pm_constant_id_t name
GlobalVariableWriteNode::name.
struct pm_node_list elements
HashNode::elements.
pm_location_t closing_loc
HashNode::closing_loc.
pm_location_t opening_loc
HashNode::opening_loc.
struct pm_node_list elements
HashPatternNode::elements.
pm_location_t opening_loc
HashPatternNode::opening_loc.
struct pm_node * rest
HashPatternNode::rest.
pm_location_t closing_loc
HashPatternNode::closing_loc.
struct pm_node * constant
HashPatternNode::constant.
struct pm_node * predicate
IfNode::predicate.
pm_location_t end_keyword_loc
IfNode::end_keyword_loc.
pm_location_t if_keyword_loc
IfNode::if_keyword_loc.
struct pm_statements_node * statements
IfNode::statements.
struct pm_node * subsequent
IfNode::subsequent.
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
struct pm_node * numeric
ImaginaryNode::numeric.
struct pm_node * value
ImplicitNode::value.
struct pm_statements_node * statements
InNode::statements.
struct pm_node * pattern
InNode::pattern.
pm_location_t then_loc
InNode::then_loc.
pm_location_t in_loc
InNode::in_loc.
struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
struct pm_node * receiver
IndexAndWriteNode::receiver.
pm_node_t base
The embedded base node.
struct pm_block_argument_node * block
IndexAndWriteNode::block.
struct pm_node * value
IndexAndWriteNode::value.
pm_location_t operator_loc
IndexAndWriteNode::operator_loc.
pm_location_t closing_loc
IndexAndWriteNode::closing_loc.
pm_location_t opening_loc
IndexAndWriteNode::opening_loc.
pm_location_t call_operator_loc
IndexAndWriteNode::call_operator_loc.
pm_node_t base
The embedded base node.
struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
struct pm_node * value
IndexOperatorWriteNode::value.
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
struct pm_node * receiver
IndexOperatorWriteNode::receiver.
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
pm_node_t base
The embedded base node.
struct pm_block_argument_node * block
IndexOrWriteNode::block.
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
struct pm_node * receiver
IndexOrWriteNode::receiver.
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
struct pm_node * value
IndexOrWriteNode::value.
struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
pm_node_t base
The embedded base node.
struct pm_node * receiver
IndexTargetNode::receiver.
pm_location_t closing_loc
IndexTargetNode::closing_loc.
struct pm_arguments_node * arguments
IndexTargetNode::arguments.
pm_location_t opening_loc
IndexTargetNode::opening_loc.
struct pm_block_argument_node * block
IndexTargetNode::block.
InstanceVariableAndWriteNode.
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
struct pm_node * value
InstanceVariableAndWriteNode::value.
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
InstanceVariableOperatorWriteNode.
struct pm_node * value
InstanceVariableOperatorWriteNode::value.
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
InstanceVariableOrWriteNode.
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
struct pm_node * value
InstanceVariableOrWriteNode::value.
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
InstanceVariableReadNode.
pm_constant_id_t name
InstanceVariableReadNode::name.
InstanceVariableTargetNode.
pm_constant_id_t name
InstanceVariableTargetNode::name.
InstanceVariableWriteNode.
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
pm_constant_id_t name
InstanceVariableWriteNode::name.
struct pm_node * value
InstanceVariableWriteNode::value.
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
pm_integer_t value
IntegerNode::value.
pm_node_t base
The embedded base node.
A structure represents an arbitrary-sized integer.
InterpolatedMatchLastLineNode.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
InterpolatedRegularExpressionNode.
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedStringNode::closing_loc.
pm_location_t opening_loc
InterpolatedStringNode::opening_loc.
struct pm_node_list parts
InterpolatedStringNode::parts.
struct pm_node_list parts
InterpolatedSymbolNode::parts.
pm_location_t closing_loc
InterpolatedSymbolNode::closing_loc.
pm_location_t opening_loc
InterpolatedSymbolNode::opening_loc.
pm_location_t opening_loc
InterpolatedXStringNode::opening_loc.
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
struct pm_node_list parts
InterpolatedXStringNode::parts.
pm_node_t base
The embedded base node.
struct pm_node_list elements
KeywordHashNode::elements.
KeywordRestParameterNode.
pm_node_t base
The embedded base node.
pm_constant_id_t name
KeywordRestParameterNode::name.
pm_location_t operator_loc
KeywordRestParameterNode::operator_loc.
pm_location_t name_loc
KeywordRestParameterNode::name_loc.
pm_location_t closing_loc
LambdaNode::closing_loc.
struct pm_node * body
LambdaNode::body.
pm_location_t opening_loc
LambdaNode::opening_loc.
struct pm_node * parameters
LambdaNode::parameters.
pm_location_t operator_loc
LambdaNode::operator_loc.
pm_constant_id_list_t locals
LambdaNode::locals.
A line and column in a string.
uint32_t column
The column number.
int32_t line
The line number.
LocalVariableAndWriteNode.
pm_constant_id_t name
LocalVariableAndWriteNode::name.
uint32_t depth
LocalVariableAndWriteNode::depth.
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
struct pm_node * value
LocalVariableAndWriteNode::value.
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
LocalVariableOperatorWriteNode.
uint32_t depth
LocalVariableOperatorWriteNode::depth.
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
struct pm_node * value
LocalVariableOperatorWriteNode::value.
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
LocalVariableOrWriteNode.
uint32_t depth
LocalVariableOrWriteNode::depth.
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
struct pm_node * value
LocalVariableOrWriteNode::value.
pm_constant_id_t name
LocalVariableOrWriteNode::name.
pm_location_t name_loc
LocalVariableOrWriteNode::name_loc.
uint32_t depth
LocalVariableReadNode::depth.
pm_constant_id_t name
LocalVariableReadNode::name.
uint32_t depth
LocalVariableTargetNode::depth.
pm_constant_id_t name
LocalVariableTargetNode::name.
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
struct pm_node * value
LocalVariableWriteNode::value.
uint32_t depth
LocalVariableWriteNode::depth.
pm_constant_id_t name
LocalVariableWriteNode::name.
This represents a range of bytes in the source string to which a node or token corresponds.
const uint8_t * start
A pointer to the start location of the range in the source.
const uint8_t * end
A pointer to the end location of the range in the source.
pm_location_t content_loc
MatchLastLineNode::content_loc.
pm_location_t opening_loc
MatchLastLineNode::opening_loc.
pm_location_t closing_loc
MatchLastLineNode::closing_loc.
pm_string_t unescaped
MatchLastLineNode::unescaped.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
MatchPredicateNode::operator_loc.
struct pm_node * pattern
MatchPredicateNode::pattern.
struct pm_node * value
MatchPredicateNode::value.
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
struct pm_node * value
MatchRequiredNode::value.
struct pm_node * pattern
MatchRequiredNode::pattern.
struct pm_node_list targets
MatchWriteNode::targets.
struct pm_call_node * call
MatchWriteNode::call.
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
struct pm_node * constant_path
ModuleNode::constant_path.
struct pm_node * body
ModuleNode::body.
pm_constant_id_list_t locals
ModuleNode::locals.
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
pm_constant_id_t name
ModuleNode::name.
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
struct pm_node_list lefts
MultiTargetNode::lefts.
struct pm_node * rest
MultiTargetNode::rest.
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
struct pm_node_list rights
MultiTargetNode::rights.
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
struct pm_node * value
MultiWriteNode::value.
struct pm_node * rest
MultiWriteNode::rest.
struct pm_node_list rights
MultiWriteNode::rights.
pm_location_t operator_loc
MultiWriteNode::operator_loc.
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
struct pm_node_list lefts
MultiWriteNode::lefts.
struct pm_arguments_node * arguments
NextNode::arguments.
pm_location_t keyword_loc
NextNode::keyword_loc.
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
size_t size
The number of nodes in the list.
struct pm_node ** nodes
The nodes in the list.
This is the base structure that represents a node in the syntax tree.
pm_node_flags_t flags
This represents any flags on the node.
pm_location_t location
This is the location of the node in the source.
uint8_t maximum
NumberedParametersNode::maximum.
NumberedReferenceReadNode.
uint32_t number
NumberedReferenceReadNode::number.
OptionalKeywordParameterNode.
pm_node_t base
The embedded base node.
pm_constant_id_t name
OptionalKeywordParameterNode::name.
struct pm_node * value
OptionalKeywordParameterNode::value.
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
pm_location_t name_loc
OptionalParameterNode::name_loc.
struct pm_node * value
OptionalParameterNode::value.
pm_constant_id_t name
OptionalParameterNode::name.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
struct pm_node * left
OrNode::left.
struct pm_node * right
OrNode::right.
pm_location_t operator_loc
OrNode::operator_loc.
struct pm_node * rest
ParametersNode::rest.
struct pm_node_list requireds
ParametersNode::requireds.
struct pm_block_parameter_node * block
ParametersNode::block.
struct pm_node_list optionals
ParametersNode::optionals.
struct pm_node_list posts
ParametersNode::posts.
struct pm_node * keyword_rest
ParametersNode::keyword_rest.
struct pm_node_list keywords
ParametersNode::keywords.
struct pm_node * body
ParenthesesNode::body.
pm_location_t closing_loc
ParenthesesNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t opening_loc
ParenthesesNode::opening_loc.
This struct represents the overall parser.
pm_constant_pool_t constant_pool
This constant pool keeps all of the constants defined throughout the file so that we can reference th...
int32_t start_line
The line number at the start of the parse.
pm_newline_list_t newline_list
This is the list of newline offsets in the source file.
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
struct pm_node * expression
PinnedExpressionNode::expression.
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
struct pm_node * variable
PinnedVariableNode::variable.
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
pm_location_t closing_loc
PostExecutionNode::closing_loc.
struct pm_statements_node * statements
PostExecutionNode::statements.
pm_location_t opening_loc
PostExecutionNode::opening_loc.
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
struct pm_statements_node * statements
PreExecutionNode::statements.
pm_location_t closing_loc
PreExecutionNode::closing_loc.
pm_location_t opening_loc
PreExecutionNode::opening_loc.
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
struct pm_statements_node * statements
ProgramNode::statements.
pm_constant_id_list_t locals
ProgramNode::locals.
struct pm_node * right
RangeNode::right.
pm_location_t operator_loc
RangeNode::operator_loc.
pm_node_t base
The embedded base node.
struct pm_node * left
RangeNode::left.
pm_node_t base
The embedded base node.
pm_integer_t denominator
RationalNode::denominator.
pm_integer_t numerator
RationalNode::numerator.
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
pm_node_t base
The embedded base node.
pm_string_t unescaped
RegularExpressionNode::unescaped.
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
pm_location_t content_loc
RegularExpressionNode::content_loc.
RequiredKeywordParameterNode.
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
RequiredKeywordParameterNode::name.
pm_constant_id_t name
RequiredParameterNode::name.
pm_node_t base
The embedded base node.
struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
struct pm_node * expression
RescueModifierNode::expression.
pm_location_t keyword_loc
RescueNode::keyword_loc.
struct pm_rescue_node * subsequent
RescueNode::subsequent.
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
pm_location_t operator_loc
RescueNode::operator_loc.
struct pm_node * reference
RescueNode::reference.
struct pm_node_list exceptions
RescueNode::exceptions.
struct pm_statements_node * statements
RescueNode::statements.
pm_constant_id_t name
RestParameterNode::name.
pm_location_t name_loc
RestParameterNode::name_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
RestParameterNode::operator_loc.
pm_location_t keyword_loc
ReturnNode::keyword_loc.
struct pm_arguments_node * arguments
ReturnNode::arguments.
struct pm_node * write
ShareableConstantNode::write.
pm_node_t base
The embedded base node.
pm_constant_id_list_t locals
SingletonClassNode::locals.
pm_location_t operator_loc
SingletonClassNode::operator_loc.
struct pm_node * expression
SingletonClassNode::expression.
pm_location_t end_keyword_loc
SingletonClassNode::end_keyword_loc.
pm_location_t class_keyword_loc
SingletonClassNode::class_keyword_loc.
struct pm_node * body
SingletonClassNode::body.
pm_string_t filepath
SourceFileNode::filepath.
pm_node_t base
The embedded base node.
struct pm_node * expression
SplatNode::expression.
pm_location_t operator_loc
SplatNode::operator_loc.
struct pm_node_list body
StatementsNode::body.
pm_node_t base
The embedded base node.
pm_string_t unescaped
StringNode::unescaped.
pm_location_t content_loc
StringNode::content_loc.
pm_location_t closing_loc
StringNode::closing_loc.
pm_location_t opening_loc
StringNode::opening_loc.
struct pm_arguments_node * arguments
SuperNode::arguments.
pm_location_t lparen_loc
SuperNode::lparen_loc.
pm_location_t keyword_loc
SuperNode::keyword_loc.
pm_location_t rparen_loc
SuperNode::rparen_loc.
struct pm_node * block
SuperNode::block.
pm_location_t opening_loc
SymbolNode::opening_loc.
pm_location_t value_loc
SymbolNode::value_loc.
pm_location_t closing_loc
SymbolNode::closing_loc.
pm_string_t unescaped
SymbolNode::unescaped.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
UndefNode::keyword_loc.
struct pm_node_list names
UndefNode::names.
pm_location_t keyword_loc
UnlessNode::keyword_loc.
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
struct pm_statements_node * statements
UnlessNode::statements.
struct pm_node * predicate
UnlessNode::predicate.
struct pm_else_node * else_clause
UnlessNode::else_clause.
struct pm_statements_node * statements
UntilNode::statements.
pm_location_t closing_loc
UntilNode::closing_loc.
struct pm_node * predicate
UntilNode::predicate.
pm_location_t keyword_loc
UntilNode::keyword_loc.
pm_node_t base
The embedded base node.
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
struct pm_statements_node * statements
WhenNode::statements.
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
pm_location_t keyword_loc
WhenNode::keyword_loc.
struct pm_node_list conditions
WhenNode::conditions.
pm_location_t closing_loc
WhileNode::closing_loc.
pm_location_t keyword_loc
WhileNode::keyword_loc.
struct pm_statements_node * statements
WhileNode::statements.
pm_node_t base
The embedded base node.
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
struct pm_node * predicate
WhileNode::predicate.
pm_location_t closing_loc
XStringNode::closing_loc.
pm_location_t opening_loc
XStringNode::opening_loc.
pm_location_t content_loc
XStringNode::content_loc.
pm_string_t unescaped
XStringNode::unescaped.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
YieldNode::keyword_loc.
pm_location_t lparen_loc
YieldNode::lparen_loc.
pm_location_t rparen_loc
YieldNode::rparen_loc.
struct pm_arguments_node * arguments
YieldNode::arguments.