3022    switch (PM_NODE_TYPE(node)) {
 
 3023        case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
 
 3024            pm_buffer_append_string(buffer, 
"{\"type\":\"AliasGlobalVariableNode\",\"location\":", 45);
 
 3027            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3030            pm_buffer_append_byte(buffer, 
',');
 
 3031            pm_buffer_append_string(buffer, 
"\"new_name\":", 11);
 
 3035            pm_buffer_append_byte(buffer, 
',');
 
 3036            pm_buffer_append_string(buffer, 
"\"old_name\":", 11);
 
 3040            pm_buffer_append_byte(buffer, 
',');
 
 3041            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 3042            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 3044            pm_buffer_append_byte(buffer, 
'}');
 
 3047        case PM_ALIAS_METHOD_NODE: {
 
 3048            pm_buffer_append_string(buffer, 
"{\"type\":\"AliasMethodNode\",\"location\":", 37);
 
 3051            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3054            pm_buffer_append_byte(buffer, 
',');
 
 3055            pm_buffer_append_string(buffer, 
"\"new_name\":", 11);
 
 3059            pm_buffer_append_byte(buffer, 
',');
 
 3060            pm_buffer_append_string(buffer, 
"\"old_name\":", 11);
 
 3064            pm_buffer_append_byte(buffer, 
',');
 
 3065            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 3066            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 3068            pm_buffer_append_byte(buffer, 
'}');
 
 3071        case PM_ALTERNATION_PATTERN_NODE: {
 
 3072            pm_buffer_append_string(buffer, 
"{\"type\":\"AlternationPatternNode\",\"location\":", 44);
 
 3075            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3078            pm_buffer_append_byte(buffer, 
',');
 
 3079            pm_buffer_append_string(buffer, 
"\"left\":", 7);
 
 3080            pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
 
 3083            pm_buffer_append_byte(buffer, 
',');
 
 3084            pm_buffer_append_string(buffer, 
"\"right\":", 8);
 
 3088            pm_buffer_append_byte(buffer, 
',');
 
 3089            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 3090            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 3092            pm_buffer_append_byte(buffer, 
'}');
 
 3096            pm_buffer_append_string(buffer, 
"{\"type\":\"AndNode\",\"location\":", 29);
 
 3099            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3102            pm_buffer_append_byte(buffer, 
',');
 
 3103            pm_buffer_append_string(buffer, 
"\"left\":", 7);
 
 3104            pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
 
 3107            pm_buffer_append_byte(buffer, 
',');
 
 3108            pm_buffer_append_string(buffer, 
"\"right\":", 8);
 
 3112            pm_buffer_append_byte(buffer, 
',');
 
 3113            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 3114            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 3116            pm_buffer_append_byte(buffer, 
'}');
 
 3119        case PM_ARGUMENTS_NODE: {
 
 3120            pm_buffer_append_string(buffer, 
"{\"type\":\"ArgumentsNode\",\"location\":", 35);
 
 3123            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3126            pm_buffer_append_byte(buffer, 
',');
 
 3127            pm_buffer_append_string(buffer, 
"\"ArgumentsNodeFlags\":", 21);
 
 3129            pm_buffer_append_byte(buffer, 
'[');
 
 3130            if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING)) {
 
 3131                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3132                pm_buffer_append_string(buffer, 
"\"CONTAINS_FORWARDING\"", 21);
 
 3135            if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS)) {
 
 3136                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3137                pm_buffer_append_string(buffer, 
"\"CONTAINS_KEYWORDS\"", 19);
 
 3140            if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT)) {
 
 3141                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3142                pm_buffer_append_string(buffer, 
"\"CONTAINS_KEYWORD_SPLAT\"", 24);
 
 3145            if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT)) {
 
 3146                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3147                pm_buffer_append_string(buffer, 
"\"CONTAINS_SPLAT\"", 16);
 
 3150            if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS)) {
 
 3151                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3152                pm_buffer_append_string(buffer, 
"\"CONTAINS_MULTIPLE_SPLATS\"", 26);
 
 3155            pm_buffer_append_byte(buffer, 
']');
 
 3158            pm_buffer_append_byte(buffer, 
',');
 
 3159            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 3161            pm_buffer_append_byte(buffer, 
'[');
 
 3163            for (
size_t index = 0; index < arguments->
size; index++) {
 
 3164                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 3165                pm_dump_json(buffer, parser, arguments->
nodes[index]);
 
 3167            pm_buffer_append_byte(buffer, 
']');
 
 3169            pm_buffer_append_byte(buffer, 
'}');
 
 3172        case PM_ARRAY_NODE: {
 
 3173            pm_buffer_append_string(buffer, 
"{\"type\":\"ArrayNode\",\"location\":", 31);
 
 3176            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3179            pm_buffer_append_byte(buffer, 
',');
 
 3180            pm_buffer_append_string(buffer, 
"\"ArrayNodeFlags\":", 17);
 
 3182            pm_buffer_append_byte(buffer, 
'[');
 
 3183            if (PM_NODE_FLAG_P(cast, PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT)) {
 
 3184                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3185                pm_buffer_append_string(buffer, 
"\"CONTAINS_SPLAT\"", 16);
 
 3188            pm_buffer_append_byte(buffer, 
']');
 
 3191            pm_buffer_append_byte(buffer, 
',');
 
 3192            pm_buffer_append_string(buffer, 
"\"elements\":", 11);
 
 3194            pm_buffer_append_byte(buffer, 
'[');
 
 3196            for (
size_t index = 0; index < elements->
size; index++) {
 
 3197                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 3198                pm_dump_json(buffer, parser, elements->
nodes[index]);
 
 3200            pm_buffer_append_byte(buffer, 
']');
 
 3203            pm_buffer_append_byte(buffer, 
',');
 
 3204            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 3206                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 3208                pm_buffer_append_string(buffer, 
"null", 4);
 
 3212            pm_buffer_append_byte(buffer, 
',');
 
 3213            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 3215                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 3217                pm_buffer_append_string(buffer, 
"null", 4);
 
 3220            pm_buffer_append_byte(buffer, 
'}');
 
 3223        case PM_ARRAY_PATTERN_NODE: {
 
 3224            pm_buffer_append_string(buffer, 
"{\"type\":\"ArrayPatternNode\",\"location\":", 38);
 
 3227            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3230            pm_buffer_append_byte(buffer, 
',');
 
 3231            pm_buffer_append_string(buffer, 
"\"constant\":", 11);
 
 3235                pm_buffer_append_string(buffer, 
"null", 4);
 
 3239            pm_buffer_append_byte(buffer, 
',');
 
 3240            pm_buffer_append_string(buffer, 
"\"requireds\":", 12);
 
 3242            pm_buffer_append_byte(buffer, 
'[');
 
 3244            for (
size_t index = 0; index < requireds->
size; index++) {
 
 3245                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 3246                pm_dump_json(buffer, parser, requireds->
nodes[index]);
 
 3248            pm_buffer_append_byte(buffer, 
']');
 
 3251            pm_buffer_append_byte(buffer, 
',');
 
 3252            pm_buffer_append_string(buffer, 
"\"rest\":", 7);
 
 3253            if (cast->
rest != NULL) {
 
 3254                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
 
 3256                pm_buffer_append_string(buffer, 
"null", 4);
 
 3260            pm_buffer_append_byte(buffer, 
',');
 
 3261            pm_buffer_append_string(buffer, 
"\"posts\":", 8);
 
 3263            pm_buffer_append_byte(buffer, 
'[');
 
 3265            for (
size_t index = 0; index < posts->
size; index++) {
 
 3266                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 3267                pm_dump_json(buffer, parser, posts->
nodes[index]);
 
 3269            pm_buffer_append_byte(buffer, 
']');
 
 3272            pm_buffer_append_byte(buffer, 
',');
 
 3273            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 3275                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 3277                pm_buffer_append_string(buffer, 
"null", 4);
 
 3281            pm_buffer_append_byte(buffer, 
',');
 
 3282            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 3284                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 3286                pm_buffer_append_string(buffer, 
"null", 4);
 
 3289            pm_buffer_append_byte(buffer, 
'}');
 
 3292        case PM_ASSOC_NODE: {
 
 3293            pm_buffer_append_string(buffer, 
"{\"type\":\"AssocNode\",\"location\":", 31);
 
 3296            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3299            pm_buffer_append_byte(buffer, 
',');
 
 3300            pm_buffer_append_string(buffer, 
"\"key\":", 6);
 
 3301            pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
key);
 
 3304            pm_buffer_append_byte(buffer, 
',');
 
 3305            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 3309            pm_buffer_append_byte(buffer, 
',');
 
 3310            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 3312                pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 3314                pm_buffer_append_string(buffer, 
"null", 4);
 
 3317            pm_buffer_append_byte(buffer, 
'}');
 
 3320        case PM_ASSOC_SPLAT_NODE: {
 
 3321            pm_buffer_append_string(buffer, 
"{\"type\":\"AssocSplatNode\",\"location\":", 36);
 
 3324            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3327            pm_buffer_append_byte(buffer, 
',');
 
 3328            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 3329            if (cast->
value != NULL) {
 
 3332                pm_buffer_append_string(buffer, 
"null", 4);
 
 3336            pm_buffer_append_byte(buffer, 
',');
 
 3337            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 3338            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 3340            pm_buffer_append_byte(buffer, 
'}');
 
 3343        case PM_BACK_REFERENCE_READ_NODE: {
 
 3344            pm_buffer_append_string(buffer, 
"{\"type\":\"BackReferenceReadNode\",\"location\":", 43);
 
 3347            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3350            pm_buffer_append_byte(buffer, 
',');
 
 3351            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 3352            pm_dump_json_constant(buffer, parser, cast->
name);
 
 3354            pm_buffer_append_byte(buffer, 
'}');
 
 3357        case PM_BEGIN_NODE: {
 
 3358            pm_buffer_append_string(buffer, 
"{\"type\":\"BeginNode\",\"location\":", 31);
 
 3361            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3364            pm_buffer_append_byte(buffer, 
',');
 
 3365            pm_buffer_append_string(buffer, 
"\"begin_keyword_loc\":", 20);
 
 3369                pm_buffer_append_string(buffer, 
"null", 4);
 
 3373            pm_buffer_append_byte(buffer, 
',');
 
 3374            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 3378                pm_buffer_append_string(buffer, 
"null", 4);
 
 3382            pm_buffer_append_byte(buffer, 
',');
 
 3383            pm_buffer_append_string(buffer, 
"\"rescue_clause\":", 16);
 
 3387                pm_buffer_append_string(buffer, 
"null", 4);
 
 3391            pm_buffer_append_byte(buffer, 
',');
 
 3392            pm_buffer_append_string(buffer, 
"\"else_clause\":", 14);
 
 3396                pm_buffer_append_string(buffer, 
"null", 4);
 
 3400            pm_buffer_append_byte(buffer, 
',');
 
 3401            pm_buffer_append_string(buffer, 
"\"ensure_clause\":", 16);
 
 3405                pm_buffer_append_string(buffer, 
"null", 4);
 
 3409            pm_buffer_append_byte(buffer, 
',');
 
 3410            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 3414                pm_buffer_append_string(buffer, 
"null", 4);
 
 3417            pm_buffer_append_byte(buffer, 
'}');
 
 3420        case PM_BLOCK_ARGUMENT_NODE: {
 
 3421            pm_buffer_append_string(buffer, 
"{\"type\":\"BlockArgumentNode\",\"location\":", 39);
 
 3424            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3427            pm_buffer_append_byte(buffer, 
',');
 
 3428            pm_buffer_append_string(buffer, 
"\"expression\":", 13);
 
 3432                pm_buffer_append_string(buffer, 
"null", 4);
 
 3436            pm_buffer_append_byte(buffer, 
',');
 
 3437            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 3438            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 3440            pm_buffer_append_byte(buffer, 
'}');
 
 3443        case PM_BLOCK_LOCAL_VARIABLE_NODE: {
 
 3444            pm_buffer_append_string(buffer, 
"{\"type\":\"BlockLocalVariableNode\",\"location\":", 44);
 
 3447            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3450            pm_buffer_append_byte(buffer, 
',');
 
 3451            pm_buffer_append_string(buffer, 
"\"ParameterFlags\":", 17);
 
 3453            pm_buffer_append_byte(buffer, 
'[');
 
 3454            if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
 
 3455                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3456                pm_buffer_append_string(buffer, 
"\"REPEATED_PARAMETER\"", 20);
 
 3459            pm_buffer_append_byte(buffer, 
']');
 
 3462            pm_buffer_append_byte(buffer, 
',');
 
 3463            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 3464            pm_dump_json_constant(buffer, parser, cast->
name);
 
 3466            pm_buffer_append_byte(buffer, 
'}');
 
 3469        case PM_BLOCK_NODE: {
 
 3470            pm_buffer_append_string(buffer, 
"{\"type\":\"BlockNode\",\"location\":", 31);
 
 3473            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3476            pm_buffer_append_byte(buffer, 
',');
 
 3477            pm_buffer_append_string(buffer, 
"\"locals\":", 9);
 
 3479            pm_buffer_append_byte(buffer, 
'[');
 
 3481            for (
size_t index = 0; index < locals->
size; index++) {
 
 3482                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 3483                pm_dump_json_constant(buffer, parser, locals->
ids[index]);
 
 3485            pm_buffer_append_byte(buffer, 
']');
 
 3488            pm_buffer_append_byte(buffer, 
',');
 
 3489            pm_buffer_append_string(buffer, 
"\"parameters\":", 13);
 
 3493                pm_buffer_append_string(buffer, 
"null", 4);
 
 3497            pm_buffer_append_byte(buffer, 
',');
 
 3498            pm_buffer_append_string(buffer, 
"\"body\":", 7);
 
 3499            if (cast->
body != NULL) {
 
 3500                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
 
 3502                pm_buffer_append_string(buffer, 
"null", 4);
 
 3506            pm_buffer_append_byte(buffer, 
',');
 
 3507            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 3508            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 3511            pm_buffer_append_byte(buffer, 
',');
 
 3512            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 3513            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 3515            pm_buffer_append_byte(buffer, 
'}');
 
 3518        case PM_BLOCK_PARAMETER_NODE: {
 
 3519            pm_buffer_append_string(buffer, 
"{\"type\":\"BlockParameterNode\",\"location\":", 40);
 
 3522            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3525            pm_buffer_append_byte(buffer, 
',');
 
 3526            pm_buffer_append_string(buffer, 
"\"ParameterFlags\":", 17);
 
 3528            pm_buffer_append_byte(buffer, 
'[');
 
 3529            if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
 
 3530                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3531                pm_buffer_append_string(buffer, 
"\"REPEATED_PARAMETER\"", 20);
 
 3534            pm_buffer_append_byte(buffer, 
']');
 
 3537            pm_buffer_append_byte(buffer, 
',');
 
 3538            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 3540                pm_dump_json_constant(buffer, parser, cast->
name);
 
 3542                pm_buffer_append_string(buffer, 
"null", 4);
 
 3546            pm_buffer_append_byte(buffer, 
',');
 
 3547            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 3549                pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 3551                pm_buffer_append_string(buffer, 
"null", 4);
 
 3555            pm_buffer_append_byte(buffer, 
',');
 
 3556            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 3557            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 3559            pm_buffer_append_byte(buffer, 
'}');
 
 3562        case PM_BLOCK_PARAMETERS_NODE: {
 
 3563            pm_buffer_append_string(buffer, 
"{\"type\":\"BlockParametersNode\",\"location\":", 41);
 
 3566            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3569            pm_buffer_append_byte(buffer, 
',');
 
 3570            pm_buffer_append_string(buffer, 
"\"parameters\":", 13);
 
 3574                pm_buffer_append_string(buffer, 
"null", 4);
 
 3578            pm_buffer_append_byte(buffer, 
',');
 
 3579            pm_buffer_append_string(buffer, 
"\"locals\":", 9);
 
 3581            pm_buffer_append_byte(buffer, 
'[');
 
 3583            for (
size_t index = 0; index < locals->
size; index++) {
 
 3584                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 3585                pm_dump_json(buffer, parser, locals->
nodes[index]);
 
 3587            pm_buffer_append_byte(buffer, 
']');
 
 3590            pm_buffer_append_byte(buffer, 
',');
 
 3591            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 3593                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 3595                pm_buffer_append_string(buffer, 
"null", 4);
 
 3599            pm_buffer_append_byte(buffer, 
',');
 
 3600            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 3602                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 3604                pm_buffer_append_string(buffer, 
"null", 4);
 
 3607            pm_buffer_append_byte(buffer, 
'}');
 
 3610        case PM_BREAK_NODE: {
 
 3611            pm_buffer_append_string(buffer, 
"{\"type\":\"BreakNode\",\"location\":", 31);
 
 3614            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3617            pm_buffer_append_byte(buffer, 
',');
 
 3618            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 3622                pm_buffer_append_string(buffer, 
"null", 4);
 
 3626            pm_buffer_append_byte(buffer, 
',');
 
 3627            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 3628            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 3630            pm_buffer_append_byte(buffer, 
'}');
 
 3633        case PM_CALL_AND_WRITE_NODE: {
 
 3634            pm_buffer_append_string(buffer, 
"{\"type\":\"CallAndWriteNode\",\"location\":", 38);
 
 3637            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3640            pm_buffer_append_byte(buffer, 
',');
 
 3641            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 3643            pm_buffer_append_byte(buffer, 
'[');
 
 3644            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 3645                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3646                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 3649            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 3650                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3651                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 3654            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 3655                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3656                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 3659            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 3660                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3661                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 3664            pm_buffer_append_byte(buffer, 
']');
 
 3667            pm_buffer_append_byte(buffer, 
',');
 
 3668            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 3672                pm_buffer_append_string(buffer, 
"null", 4);
 
 3676            pm_buffer_append_byte(buffer, 
',');
 
 3677            pm_buffer_append_string(buffer, 
"\"call_operator_loc\":", 20);
 
 3681                pm_buffer_append_string(buffer, 
"null", 4);
 
 3685            pm_buffer_append_byte(buffer, 
',');
 
 3686            pm_buffer_append_string(buffer, 
"\"message_loc\":", 14);
 
 3688                pm_dump_json_location(buffer, parser, &cast->
message_loc);
 
 3690                pm_buffer_append_string(buffer, 
"null", 4);
 
 3694            pm_buffer_append_byte(buffer, 
',');
 
 3695            pm_buffer_append_string(buffer, 
"\"read_name\":", 12);
 
 3696            pm_dump_json_constant(buffer, parser, cast->
read_name);
 
 3699            pm_buffer_append_byte(buffer, 
',');
 
 3700            pm_buffer_append_string(buffer, 
"\"write_name\":", 13);
 
 3701            pm_dump_json_constant(buffer, parser, cast->
write_name);
 
 3704            pm_buffer_append_byte(buffer, 
',');
 
 3705            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 3706            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 3709            pm_buffer_append_byte(buffer, 
',');
 
 3710            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 3713            pm_buffer_append_byte(buffer, 
'}');
 
 3716        case PM_CALL_NODE: {
 
 3717            pm_buffer_append_string(buffer, 
"{\"type\":\"CallNode\",\"location\":", 30);
 
 3720            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3723            pm_buffer_append_byte(buffer, 
',');
 
 3724            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 3726            pm_buffer_append_byte(buffer, 
'[');
 
 3727            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 3728                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3729                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 3732            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 3733                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3734                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 3737            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 3738                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3739                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 3742            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 3743                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3744                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 3747            pm_buffer_append_byte(buffer, 
']');
 
 3750            pm_buffer_append_byte(buffer, 
',');
 
 3751            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 3755                pm_buffer_append_string(buffer, 
"null", 4);
 
 3759            pm_buffer_append_byte(buffer, 
',');
 
 3760            pm_buffer_append_string(buffer, 
"\"call_operator_loc\":", 20);
 
 3764                pm_buffer_append_string(buffer, 
"null", 4);
 
 3768            pm_buffer_append_byte(buffer, 
',');
 
 3769            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 3770            pm_dump_json_constant(buffer, parser, cast->
name);
 
 3773            pm_buffer_append_byte(buffer, 
',');
 
 3774            pm_buffer_append_string(buffer, 
"\"message_loc\":", 14);
 
 3776                pm_dump_json_location(buffer, parser, &cast->
message_loc);
 
 3778                pm_buffer_append_string(buffer, 
"null", 4);
 
 3782            pm_buffer_append_byte(buffer, 
',');
 
 3783            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 3785                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 3787                pm_buffer_append_string(buffer, 
"null", 4);
 
 3791            pm_buffer_append_byte(buffer, 
',');
 
 3792            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 3796                pm_buffer_append_string(buffer, 
"null", 4);
 
 3800            pm_buffer_append_byte(buffer, 
',');
 
 3801            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 3803                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 3805                pm_buffer_append_string(buffer, 
"null", 4);
 
 3809            pm_buffer_append_byte(buffer, 
',');
 
 3810            pm_buffer_append_string(buffer, 
"\"equal_loc\":", 12);
 
 3812                pm_dump_json_location(buffer, parser, &cast->
equal_loc);
 
 3814                pm_buffer_append_string(buffer, 
"null", 4);
 
 3818            pm_buffer_append_byte(buffer, 
',');
 
 3819            pm_buffer_append_string(buffer, 
"\"block\":", 8);
 
 3820            if (cast->
block != NULL) {
 
 3823                pm_buffer_append_string(buffer, 
"null", 4);
 
 3826            pm_buffer_append_byte(buffer, 
'}');
 
 3829        case PM_CALL_OPERATOR_WRITE_NODE: {
 
 3830            pm_buffer_append_string(buffer, 
"{\"type\":\"CallOperatorWriteNode\",\"location\":", 43);
 
 3833            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3836            pm_buffer_append_byte(buffer, 
',');
 
 3837            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 3839            pm_buffer_append_byte(buffer, 
'[');
 
 3840            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 3841                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3842                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 3845            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 3846                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3847                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 3850            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 3851                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3852                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 3855            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 3856                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3857                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 3860            pm_buffer_append_byte(buffer, 
']');
 
 3863            pm_buffer_append_byte(buffer, 
',');
 
 3864            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 3868                pm_buffer_append_string(buffer, 
"null", 4);
 
 3872            pm_buffer_append_byte(buffer, 
',');
 
 3873            pm_buffer_append_string(buffer, 
"\"call_operator_loc\":", 20);
 
 3877                pm_buffer_append_string(buffer, 
"null", 4);
 
 3881            pm_buffer_append_byte(buffer, 
',');
 
 3882            pm_buffer_append_string(buffer, 
"\"message_loc\":", 14);
 
 3884                pm_dump_json_location(buffer, parser, &cast->
message_loc);
 
 3886                pm_buffer_append_string(buffer, 
"null", 4);
 
 3890            pm_buffer_append_byte(buffer, 
',');
 
 3891            pm_buffer_append_string(buffer, 
"\"read_name\":", 12);
 
 3892            pm_dump_json_constant(buffer, parser, cast->
read_name);
 
 3895            pm_buffer_append_byte(buffer, 
',');
 
 3896            pm_buffer_append_string(buffer, 
"\"write_name\":", 13);
 
 3897            pm_dump_json_constant(buffer, parser, cast->
write_name);
 
 3900            pm_buffer_append_byte(buffer, 
',');
 
 3901            pm_buffer_append_string(buffer, 
"\"binary_operator\":", 18);
 
 3905            pm_buffer_append_byte(buffer, 
',');
 
 3906            pm_buffer_append_string(buffer, 
"\"binary_operator_loc\":", 22);
 
 3910            pm_buffer_append_byte(buffer, 
',');
 
 3911            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 3914            pm_buffer_append_byte(buffer, 
'}');
 
 3917        case PM_CALL_OR_WRITE_NODE: {
 
 3918            pm_buffer_append_string(buffer, 
"{\"type\":\"CallOrWriteNode\",\"location\":", 37);
 
 3921            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 3924            pm_buffer_append_byte(buffer, 
',');
 
 3925            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 3927            pm_buffer_append_byte(buffer, 
'[');
 
 3928            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 3929                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3930                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 3933            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 3934                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3935                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 3938            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 3939                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3940                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 3943            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 3944                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 3945                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 3948            pm_buffer_append_byte(buffer, 
']');
 
 3951            pm_buffer_append_byte(buffer, 
',');
 
 3952            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 3956                pm_buffer_append_string(buffer, 
"null", 4);
 
 3960            pm_buffer_append_byte(buffer, 
',');
 
 3961            pm_buffer_append_string(buffer, 
"\"call_operator_loc\":", 20);
 
 3965                pm_buffer_append_string(buffer, 
"null", 4);
 
 3969            pm_buffer_append_byte(buffer, 
',');
 
 3970            pm_buffer_append_string(buffer, 
"\"message_loc\":", 14);
 
 3972                pm_dump_json_location(buffer, parser, &cast->
message_loc);
 
 3974                pm_buffer_append_string(buffer, 
"null", 4);
 
 3978            pm_buffer_append_byte(buffer, 
',');
 
 3979            pm_buffer_append_string(buffer, 
"\"read_name\":", 12);
 
 3980            pm_dump_json_constant(buffer, parser, cast->
read_name);
 
 3983            pm_buffer_append_byte(buffer, 
',');
 
 3984            pm_buffer_append_string(buffer, 
"\"write_name\":", 13);
 
 3985            pm_dump_json_constant(buffer, parser, cast->
write_name);
 
 3988            pm_buffer_append_byte(buffer, 
',');
 
 3989            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 3990            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 3993            pm_buffer_append_byte(buffer, 
',');
 
 3994            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 3997            pm_buffer_append_byte(buffer, 
'}');
 
 4000        case PM_CALL_TARGET_NODE: {
 
 4001            pm_buffer_append_string(buffer, 
"{\"type\":\"CallTargetNode\",\"location\":", 36);
 
 4004            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4007            pm_buffer_append_byte(buffer, 
',');
 
 4008            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 4010            pm_buffer_append_byte(buffer, 
'[');
 
 4011            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 4012                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 4013                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 4016            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 4017                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 4018                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 4021            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 4022                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 4023                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 4026            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 4027                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 4028                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 4031            pm_buffer_append_byte(buffer, 
']');
 
 4034            pm_buffer_append_byte(buffer, 
',');
 
 4035            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 4039            pm_buffer_append_byte(buffer, 
',');
 
 4040            pm_buffer_append_string(buffer, 
"\"call_operator_loc\":", 20);
 
 4044            pm_buffer_append_byte(buffer, 
',');
 
 4045            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4046            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4049            pm_buffer_append_byte(buffer, 
',');
 
 4050            pm_buffer_append_string(buffer, 
"\"message_loc\":", 14);
 
 4051            pm_dump_json_location(buffer, parser, &cast->
message_loc);
 
 4053            pm_buffer_append_byte(buffer, 
'}');
 
 4056        case PM_CAPTURE_PATTERN_NODE: {
 
 4057            pm_buffer_append_string(buffer, 
"{\"type\":\"CapturePatternNode\",\"location\":", 40);
 
 4060            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4063            pm_buffer_append_byte(buffer, 
',');
 
 4064            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4068            pm_buffer_append_byte(buffer, 
',');
 
 4069            pm_buffer_append_string(buffer, 
"\"target\":", 9);
 
 4073            pm_buffer_append_byte(buffer, 
',');
 
 4074            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4075            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4077            pm_buffer_append_byte(buffer, 
'}');
 
 4080        case PM_CASE_MATCH_NODE: {
 
 4081            pm_buffer_append_string(buffer, 
"{\"type\":\"CaseMatchNode\",\"location\":", 35);
 
 4084            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4087            pm_buffer_append_byte(buffer, 
',');
 
 4088            pm_buffer_append_string(buffer, 
"\"predicate\":", 12);
 
 4092                pm_buffer_append_string(buffer, 
"null", 4);
 
 4096            pm_buffer_append_byte(buffer, 
',');
 
 4097            pm_buffer_append_string(buffer, 
"\"conditions\":", 13);
 
 4099            pm_buffer_append_byte(buffer, 
'[');
 
 4101            for (
size_t index = 0; index < conditions->
size; index++) {
 
 4102                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 4103                pm_dump_json(buffer, parser, conditions->
nodes[index]);
 
 4105            pm_buffer_append_byte(buffer, 
']');
 
 4108            pm_buffer_append_byte(buffer, 
',');
 
 4109            pm_buffer_append_string(buffer, 
"\"else_clause\":", 14);
 
 4113                pm_buffer_append_string(buffer, 
"null", 4);
 
 4117            pm_buffer_append_byte(buffer, 
',');
 
 4118            pm_buffer_append_string(buffer, 
"\"case_keyword_loc\":", 19);
 
 4122            pm_buffer_append_byte(buffer, 
',');
 
 4123            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 4126            pm_buffer_append_byte(buffer, 
'}');
 
 4129        case PM_CASE_NODE: {
 
 4130            pm_buffer_append_string(buffer, 
"{\"type\":\"CaseNode\",\"location\":", 30);
 
 4133            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4136            pm_buffer_append_byte(buffer, 
',');
 
 4137            pm_buffer_append_string(buffer, 
"\"predicate\":", 12);
 
 4141                pm_buffer_append_string(buffer, 
"null", 4);
 
 4145            pm_buffer_append_byte(buffer, 
',');
 
 4146            pm_buffer_append_string(buffer, 
"\"conditions\":", 13);
 
 4148            pm_buffer_append_byte(buffer, 
'[');
 
 4150            for (
size_t index = 0; index < conditions->
size; index++) {
 
 4151                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 4152                pm_dump_json(buffer, parser, conditions->
nodes[index]);
 
 4154            pm_buffer_append_byte(buffer, 
']');
 
 4157            pm_buffer_append_byte(buffer, 
',');
 
 4158            pm_buffer_append_string(buffer, 
"\"else_clause\":", 14);
 
 4162                pm_buffer_append_string(buffer, 
"null", 4);
 
 4166            pm_buffer_append_byte(buffer, 
',');
 
 4167            pm_buffer_append_string(buffer, 
"\"case_keyword_loc\":", 19);
 
 4171            pm_buffer_append_byte(buffer, 
',');
 
 4172            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 4175            pm_buffer_append_byte(buffer, 
'}');
 
 4178        case PM_CLASS_NODE: {
 
 4179            pm_buffer_append_string(buffer, 
"{\"type\":\"ClassNode\",\"location\":", 31);
 
 4182            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4185            pm_buffer_append_byte(buffer, 
',');
 
 4186            pm_buffer_append_string(buffer, 
"\"locals\":", 9);
 
 4188            pm_buffer_append_byte(buffer, 
'[');
 
 4190            for (
size_t index = 0; index < locals->
size; index++) {
 
 4191                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 4192                pm_dump_json_constant(buffer, parser, locals->
ids[index]);
 
 4194            pm_buffer_append_byte(buffer, 
']');
 
 4197            pm_buffer_append_byte(buffer, 
',');
 
 4198            pm_buffer_append_string(buffer, 
"\"class_keyword_loc\":", 20);
 
 4202            pm_buffer_append_byte(buffer, 
',');
 
 4203            pm_buffer_append_string(buffer, 
"\"constant_path\":", 16);
 
 4207            pm_buffer_append_byte(buffer, 
',');
 
 4208            pm_buffer_append_string(buffer, 
"\"inheritance_operator_loc\":", 27);
 
 4212                pm_buffer_append_string(buffer, 
"null", 4);
 
 4216            pm_buffer_append_byte(buffer, 
',');
 
 4217            pm_buffer_append_string(buffer, 
"\"superclass\":", 13);
 
 4221                pm_buffer_append_string(buffer, 
"null", 4);
 
 4225            pm_buffer_append_byte(buffer, 
',');
 
 4226            pm_buffer_append_string(buffer, 
"\"body\":", 7);
 
 4227            if (cast->
body != NULL) {
 
 4228                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
 
 4230                pm_buffer_append_string(buffer, 
"null", 4);
 
 4234            pm_buffer_append_byte(buffer, 
',');
 
 4235            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 4239            pm_buffer_append_byte(buffer, 
',');
 
 4240            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4241            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4243            pm_buffer_append_byte(buffer, 
'}');
 
 4246        case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
 
 4247            pm_buffer_append_string(buffer, 
"{\"type\":\"ClassVariableAndWriteNode\",\"location\":", 47);
 
 4250            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4253            pm_buffer_append_byte(buffer, 
',');
 
 4254            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4255            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4258            pm_buffer_append_byte(buffer, 
',');
 
 4259            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4260            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4263            pm_buffer_append_byte(buffer, 
',');
 
 4264            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4265            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4268            pm_buffer_append_byte(buffer, 
',');
 
 4269            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4272            pm_buffer_append_byte(buffer, 
'}');
 
 4275        case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
 
 4276            pm_buffer_append_string(buffer, 
"{\"type\":\"ClassVariableOperatorWriteNode\",\"location\":", 52);
 
 4279            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4282            pm_buffer_append_byte(buffer, 
',');
 
 4283            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4284            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4287            pm_buffer_append_byte(buffer, 
',');
 
 4288            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4289            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4292            pm_buffer_append_byte(buffer, 
',');
 
 4293            pm_buffer_append_string(buffer, 
"\"binary_operator_loc\":", 22);
 
 4297            pm_buffer_append_byte(buffer, 
',');
 
 4298            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4302            pm_buffer_append_byte(buffer, 
',');
 
 4303            pm_buffer_append_string(buffer, 
"\"binary_operator\":", 18);
 
 4306            pm_buffer_append_byte(buffer, 
'}');
 
 4309        case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
 
 4310            pm_buffer_append_string(buffer, 
"{\"type\":\"ClassVariableOrWriteNode\",\"location\":", 46);
 
 4313            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4316            pm_buffer_append_byte(buffer, 
',');
 
 4317            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4318            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4321            pm_buffer_append_byte(buffer, 
',');
 
 4322            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4323            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4326            pm_buffer_append_byte(buffer, 
',');
 
 4327            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4328            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4331            pm_buffer_append_byte(buffer, 
',');
 
 4332            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4335            pm_buffer_append_byte(buffer, 
'}');
 
 4338        case PM_CLASS_VARIABLE_READ_NODE: {
 
 4339            pm_buffer_append_string(buffer, 
"{\"type\":\"ClassVariableReadNode\",\"location\":", 43);
 
 4342            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4345            pm_buffer_append_byte(buffer, 
',');
 
 4346            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4347            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4349            pm_buffer_append_byte(buffer, 
'}');
 
 4352        case PM_CLASS_VARIABLE_TARGET_NODE: {
 
 4353            pm_buffer_append_string(buffer, 
"{\"type\":\"ClassVariableTargetNode\",\"location\":", 45);
 
 4356            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4359            pm_buffer_append_byte(buffer, 
',');
 
 4360            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4361            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4363            pm_buffer_append_byte(buffer, 
'}');
 
 4366        case PM_CLASS_VARIABLE_WRITE_NODE: {
 
 4367            pm_buffer_append_string(buffer, 
"{\"type\":\"ClassVariableWriteNode\",\"location\":", 44);
 
 4370            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4373            pm_buffer_append_byte(buffer, 
',');
 
 4374            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4375            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4378            pm_buffer_append_byte(buffer, 
',');
 
 4379            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4380            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4383            pm_buffer_append_byte(buffer, 
',');
 
 4384            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4388            pm_buffer_append_byte(buffer, 
',');
 
 4389            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4390            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4392            pm_buffer_append_byte(buffer, 
'}');
 
 4395        case PM_CONSTANT_AND_WRITE_NODE: {
 
 4396            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantAndWriteNode\",\"location\":", 42);
 
 4399            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4402            pm_buffer_append_byte(buffer, 
',');
 
 4403            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4404            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4407            pm_buffer_append_byte(buffer, 
',');
 
 4408            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4409            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4412            pm_buffer_append_byte(buffer, 
',');
 
 4413            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4414            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4417            pm_buffer_append_byte(buffer, 
',');
 
 4418            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4421            pm_buffer_append_byte(buffer, 
'}');
 
 4424        case PM_CONSTANT_OPERATOR_WRITE_NODE: {
 
 4425            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantOperatorWriteNode\",\"location\":", 47);
 
 4428            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4431            pm_buffer_append_byte(buffer, 
',');
 
 4432            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4433            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4436            pm_buffer_append_byte(buffer, 
',');
 
 4437            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4438            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4441            pm_buffer_append_byte(buffer, 
',');
 
 4442            pm_buffer_append_string(buffer, 
"\"binary_operator_loc\":", 22);
 
 4446            pm_buffer_append_byte(buffer, 
',');
 
 4447            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4451            pm_buffer_append_byte(buffer, 
',');
 
 4452            pm_buffer_append_string(buffer, 
"\"binary_operator\":", 18);
 
 4455            pm_buffer_append_byte(buffer, 
'}');
 
 4458        case PM_CONSTANT_OR_WRITE_NODE: {
 
 4459            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantOrWriteNode\",\"location\":", 41);
 
 4462            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4465            pm_buffer_append_byte(buffer, 
',');
 
 4466            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4467            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4470            pm_buffer_append_byte(buffer, 
',');
 
 4471            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4472            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4475            pm_buffer_append_byte(buffer, 
',');
 
 4476            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4477            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4480            pm_buffer_append_byte(buffer, 
',');
 
 4481            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4484            pm_buffer_append_byte(buffer, 
'}');
 
 4487        case PM_CONSTANT_PATH_AND_WRITE_NODE: {
 
 4488            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantPathAndWriteNode\",\"location\":", 46);
 
 4491            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4494            pm_buffer_append_byte(buffer, 
',');
 
 4495            pm_buffer_append_string(buffer, 
"\"target\":", 9);
 
 4499            pm_buffer_append_byte(buffer, 
',');
 
 4500            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4501            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4504            pm_buffer_append_byte(buffer, 
',');
 
 4505            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4508            pm_buffer_append_byte(buffer, 
'}');
 
 4511        case PM_CONSTANT_PATH_NODE: {
 
 4512            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantPathNode\",\"location\":", 38);
 
 4515            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4518            pm_buffer_append_byte(buffer, 
',');
 
 4519            pm_buffer_append_string(buffer, 
"\"parent\":", 9);
 
 4520            if (cast->
parent != NULL) {
 
 4523                pm_buffer_append_string(buffer, 
"null", 4);
 
 4527            pm_buffer_append_byte(buffer, 
',');
 
 4528            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4530                pm_dump_json_constant(buffer, parser, cast->
name);
 
 4532                pm_buffer_append_string(buffer, 
"null", 4);
 
 4536            pm_buffer_append_byte(buffer, 
',');
 
 4537            pm_buffer_append_string(buffer, 
"\"delimiter_loc\":", 16);
 
 4538            pm_dump_json_location(buffer, parser, &cast->
delimiter_loc);
 
 4541            pm_buffer_append_byte(buffer, 
',');
 
 4542            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4543            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4545            pm_buffer_append_byte(buffer, 
'}');
 
 4548        case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
 
 4549            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantPathOperatorWriteNode\",\"location\":", 51);
 
 4552            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4555            pm_buffer_append_byte(buffer, 
',');
 
 4556            pm_buffer_append_string(buffer, 
"\"target\":", 9);
 
 4560            pm_buffer_append_byte(buffer, 
',');
 
 4561            pm_buffer_append_string(buffer, 
"\"binary_operator_loc\":", 22);
 
 4565            pm_buffer_append_byte(buffer, 
',');
 
 4566            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4570            pm_buffer_append_byte(buffer, 
',');
 
 4571            pm_buffer_append_string(buffer, 
"\"binary_operator\":", 18);
 
 4574            pm_buffer_append_byte(buffer, 
'}');
 
 4577        case PM_CONSTANT_PATH_OR_WRITE_NODE: {
 
 4578            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantPathOrWriteNode\",\"location\":", 45);
 
 4581            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4584            pm_buffer_append_byte(buffer, 
',');
 
 4585            pm_buffer_append_string(buffer, 
"\"target\":", 9);
 
 4589            pm_buffer_append_byte(buffer, 
',');
 
 4590            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4591            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4594            pm_buffer_append_byte(buffer, 
',');
 
 4595            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4598            pm_buffer_append_byte(buffer, 
'}');
 
 4601        case PM_CONSTANT_PATH_TARGET_NODE: {
 
 4602            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantPathTargetNode\",\"location\":", 44);
 
 4605            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4608            pm_buffer_append_byte(buffer, 
',');
 
 4609            pm_buffer_append_string(buffer, 
"\"parent\":", 9);
 
 4610            if (cast->
parent != NULL) {
 
 4613                pm_buffer_append_string(buffer, 
"null", 4);
 
 4617            pm_buffer_append_byte(buffer, 
',');
 
 4618            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4620                pm_dump_json_constant(buffer, parser, cast->
name);
 
 4622                pm_buffer_append_string(buffer, 
"null", 4);
 
 4626            pm_buffer_append_byte(buffer, 
',');
 
 4627            pm_buffer_append_string(buffer, 
"\"delimiter_loc\":", 16);
 
 4628            pm_dump_json_location(buffer, parser, &cast->
delimiter_loc);
 
 4631            pm_buffer_append_byte(buffer, 
',');
 
 4632            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4633            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4635            pm_buffer_append_byte(buffer, 
'}');
 
 4638        case PM_CONSTANT_PATH_WRITE_NODE: {
 
 4639            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantPathWriteNode\",\"location\":", 43);
 
 4642            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4645            pm_buffer_append_byte(buffer, 
',');
 
 4646            pm_buffer_append_string(buffer, 
"\"target\":", 9);
 
 4650            pm_buffer_append_byte(buffer, 
',');
 
 4651            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4652            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4655            pm_buffer_append_byte(buffer, 
',');
 
 4656            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4659            pm_buffer_append_byte(buffer, 
'}');
 
 4662        case PM_CONSTANT_READ_NODE: {
 
 4663            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantReadNode\",\"location\":", 38);
 
 4666            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4669            pm_buffer_append_byte(buffer, 
',');
 
 4670            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4671            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4673            pm_buffer_append_byte(buffer, 
'}');
 
 4676        case PM_CONSTANT_TARGET_NODE: {
 
 4677            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantTargetNode\",\"location\":", 40);
 
 4680            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4683            pm_buffer_append_byte(buffer, 
',');
 
 4684            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4685            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4687            pm_buffer_append_byte(buffer, 
'}');
 
 4690        case PM_CONSTANT_WRITE_NODE: {
 
 4691            pm_buffer_append_string(buffer, 
"{\"type\":\"ConstantWriteNode\",\"location\":", 39);
 
 4694            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4697            pm_buffer_append_byte(buffer, 
',');
 
 4698            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4699            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4702            pm_buffer_append_byte(buffer, 
',');
 
 4703            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4704            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4707            pm_buffer_append_byte(buffer, 
',');
 
 4708            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4712            pm_buffer_append_byte(buffer, 
',');
 
 4713            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4714            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4716            pm_buffer_append_byte(buffer, 
'}');
 
 4720            pm_buffer_append_string(buffer, 
"{\"type\":\"DefNode\",\"location\":", 29);
 
 4723            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4726            pm_buffer_append_byte(buffer, 
',');
 
 4727            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 4728            pm_dump_json_constant(buffer, parser, cast->
name);
 
 4731            pm_buffer_append_byte(buffer, 
',');
 
 4732            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 4733            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 4736            pm_buffer_append_byte(buffer, 
',');
 
 4737            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 4741                pm_buffer_append_string(buffer, 
"null", 4);
 
 4745            pm_buffer_append_byte(buffer, 
',');
 
 4746            pm_buffer_append_string(buffer, 
"\"parameters\":", 13);
 
 4750                pm_buffer_append_string(buffer, 
"null", 4);
 
 4754            pm_buffer_append_byte(buffer, 
',');
 
 4755            pm_buffer_append_string(buffer, 
"\"body\":", 7);
 
 4756            if (cast->
body != NULL) {
 
 4757                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
 
 4759                pm_buffer_append_string(buffer, 
"null", 4);
 
 4763            pm_buffer_append_byte(buffer, 
',');
 
 4764            pm_buffer_append_string(buffer, 
"\"locals\":", 9);
 
 4766            pm_buffer_append_byte(buffer, 
'[');
 
 4768            for (
size_t index = 0; index < locals->
size; index++) {
 
 4769                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 4770                pm_dump_json_constant(buffer, parser, locals->
ids[index]);
 
 4772            pm_buffer_append_byte(buffer, 
']');
 
 4775            pm_buffer_append_byte(buffer, 
',');
 
 4776            pm_buffer_append_string(buffer, 
"\"def_keyword_loc\":", 18);
 
 4780            pm_buffer_append_byte(buffer, 
',');
 
 4781            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4783                pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4785                pm_buffer_append_string(buffer, 
"null", 4);
 
 4789            pm_buffer_append_byte(buffer, 
',');
 
 4790            pm_buffer_append_string(buffer, 
"\"lparen_loc\":", 13);
 
 4792                pm_dump_json_location(buffer, parser, &cast->
lparen_loc);
 
 4794                pm_buffer_append_string(buffer, 
"null", 4);
 
 4798            pm_buffer_append_byte(buffer, 
',');
 
 4799            pm_buffer_append_string(buffer, 
"\"rparen_loc\":", 13);
 
 4801                pm_dump_json_location(buffer, parser, &cast->
rparen_loc);
 
 4803                pm_buffer_append_string(buffer, 
"null", 4);
 
 4807            pm_buffer_append_byte(buffer, 
',');
 
 4808            pm_buffer_append_string(buffer, 
"\"equal_loc\":", 12);
 
 4810                pm_dump_json_location(buffer, parser, &cast->
equal_loc);
 
 4812                pm_buffer_append_string(buffer, 
"null", 4);
 
 4816            pm_buffer_append_byte(buffer, 
',');
 
 4817            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 4821                pm_buffer_append_string(buffer, 
"null", 4);
 
 4824            pm_buffer_append_byte(buffer, 
'}');
 
 4827        case PM_DEFINED_NODE: {
 
 4828            pm_buffer_append_string(buffer, 
"{\"type\":\"DefinedNode\",\"location\":", 33);
 
 4831            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4834            pm_buffer_append_byte(buffer, 
',');
 
 4835            pm_buffer_append_string(buffer, 
"\"lparen_loc\":", 13);
 
 4837                pm_dump_json_location(buffer, parser, &cast->
lparen_loc);
 
 4839                pm_buffer_append_string(buffer, 
"null", 4);
 
 4843            pm_buffer_append_byte(buffer, 
',');
 
 4844            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 4848            pm_buffer_append_byte(buffer, 
',');
 
 4849            pm_buffer_append_string(buffer, 
"\"rparen_loc\":", 13);
 
 4851                pm_dump_json_location(buffer, parser, &cast->
rparen_loc);
 
 4853                pm_buffer_append_string(buffer, 
"null", 4);
 
 4857            pm_buffer_append_byte(buffer, 
',');
 
 4858            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 4859            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 4861            pm_buffer_append_byte(buffer, 
'}');
 
 4864        case PM_ELSE_NODE: {
 
 4865            pm_buffer_append_string(buffer, 
"{\"type\":\"ElseNode\",\"location\":", 30);
 
 4868            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4871            pm_buffer_append_byte(buffer, 
',');
 
 4872            pm_buffer_append_string(buffer, 
"\"else_keyword_loc\":", 19);
 
 4876            pm_buffer_append_byte(buffer, 
',');
 
 4877            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 4881                pm_buffer_append_string(buffer, 
"null", 4);
 
 4885            pm_buffer_append_byte(buffer, 
',');
 
 4886            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 4890                pm_buffer_append_string(buffer, 
"null", 4);
 
 4893            pm_buffer_append_byte(buffer, 
'}');
 
 4896        case PM_EMBEDDED_STATEMENTS_NODE: {
 
 4897            pm_buffer_append_string(buffer, 
"{\"type\":\"EmbeddedStatementsNode\",\"location\":", 44);
 
 4900            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4903            pm_buffer_append_byte(buffer, 
',');
 
 4904            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 4905            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 4908            pm_buffer_append_byte(buffer, 
',');
 
 4909            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 4913                pm_buffer_append_string(buffer, 
"null", 4);
 
 4917            pm_buffer_append_byte(buffer, 
',');
 
 4918            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 4919            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 4921            pm_buffer_append_byte(buffer, 
'}');
 
 4924        case PM_EMBEDDED_VARIABLE_NODE: {
 
 4925            pm_buffer_append_string(buffer, 
"{\"type\":\"EmbeddedVariableNode\",\"location\":", 42);
 
 4928            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4931            pm_buffer_append_byte(buffer, 
',');
 
 4932            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 4933            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 4936            pm_buffer_append_byte(buffer, 
',');
 
 4937            pm_buffer_append_string(buffer, 
"\"variable\":", 11);
 
 4940            pm_buffer_append_byte(buffer, 
'}');
 
 4943        case PM_ENSURE_NODE: {
 
 4944            pm_buffer_append_string(buffer, 
"{\"type\":\"EnsureNode\",\"location\":", 32);
 
 4947            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4950            pm_buffer_append_byte(buffer, 
',');
 
 4951            pm_buffer_append_string(buffer, 
"\"ensure_keyword_loc\":", 21);
 
 4955            pm_buffer_append_byte(buffer, 
',');
 
 4956            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 4960                pm_buffer_append_string(buffer, 
"null", 4);
 
 4964            pm_buffer_append_byte(buffer, 
',');
 
 4965            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 4968            pm_buffer_append_byte(buffer, 
'}');
 
 4971        case PM_FALSE_NODE: {
 
 4972            pm_buffer_append_string(buffer, 
"{\"type\":\"FalseNode\",\"location\":", 31);
 
 4975            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4977            pm_buffer_append_byte(buffer, 
'}');
 
 4980        case PM_FIND_PATTERN_NODE: {
 
 4981            pm_buffer_append_string(buffer, 
"{\"type\":\"FindPatternNode\",\"location\":", 37);
 
 4984            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 4987            pm_buffer_append_byte(buffer, 
',');
 
 4988            pm_buffer_append_string(buffer, 
"\"constant\":", 11);
 
 4992                pm_buffer_append_string(buffer, 
"null", 4);
 
 4996            pm_buffer_append_byte(buffer, 
',');
 
 4997            pm_buffer_append_string(buffer, 
"\"left\":", 7);
 
 4998            pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
 
 5001            pm_buffer_append_byte(buffer, 
',');
 
 5002            pm_buffer_append_string(buffer, 
"\"requireds\":", 12);
 
 5004            pm_buffer_append_byte(buffer, 
'[');
 
 5006            for (
size_t index = 0; index < requireds->
size; index++) {
 
 5007                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 5008                pm_dump_json(buffer, parser, requireds->
nodes[index]);
 
 5010            pm_buffer_append_byte(buffer, 
']');
 
 5013            pm_buffer_append_byte(buffer, 
',');
 
 5014            pm_buffer_append_string(buffer, 
"\"right\":", 8);
 
 5018            pm_buffer_append_byte(buffer, 
',');
 
 5019            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 5021                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 5023                pm_buffer_append_string(buffer, 
"null", 4);
 
 5027            pm_buffer_append_byte(buffer, 
',');
 
 5028            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 5030                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 5032                pm_buffer_append_string(buffer, 
"null", 4);
 
 5035            pm_buffer_append_byte(buffer, 
'}');
 
 5038        case PM_FLIP_FLOP_NODE: {
 
 5039            pm_buffer_append_string(buffer, 
"{\"type\":\"FlipFlopNode\",\"location\":", 34);
 
 5042            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5045            pm_buffer_append_byte(buffer, 
',');
 
 5046            pm_buffer_append_string(buffer, 
"\"RangeFlags\":", 13);
 
 5048            pm_buffer_append_byte(buffer, 
'[');
 
 5049            if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
 
 5050                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5051                pm_buffer_append_string(buffer, 
"\"EXCLUDE_END\"", 13);
 
 5054            pm_buffer_append_byte(buffer, 
']');
 
 5057            pm_buffer_append_byte(buffer, 
',');
 
 5058            pm_buffer_append_string(buffer, 
"\"left\":", 7);
 
 5059            if (cast->
left != NULL) {
 
 5060                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
 
 5062                pm_buffer_append_string(buffer, 
"null", 4);
 
 5066            pm_buffer_append_byte(buffer, 
',');
 
 5067            pm_buffer_append_string(buffer, 
"\"right\":", 8);
 
 5068            if (cast->
right != NULL) {
 
 5071                pm_buffer_append_string(buffer, 
"null", 4);
 
 5075            pm_buffer_append_byte(buffer, 
',');
 
 5076            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 5077            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 5079            pm_buffer_append_byte(buffer, 
'}');
 
 5082        case PM_FLOAT_NODE: {
 
 5083            pm_buffer_append_string(buffer, 
"{\"type\":\"FloatNode\",\"location\":", 31);
 
 5086            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5089            pm_buffer_append_byte(buffer, 
',');
 
 5090            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5091            pm_buffer_append_format(buffer, 
"%f", cast->
value);
 
 5093            pm_buffer_append_byte(buffer, 
'}');
 
 5097            pm_buffer_append_string(buffer, 
"{\"type\":\"ForNode\",\"location\":", 29);
 
 5100            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5103            pm_buffer_append_byte(buffer, 
',');
 
 5104            pm_buffer_append_string(buffer, 
"\"index\":", 8);
 
 5108            pm_buffer_append_byte(buffer, 
',');
 
 5109            pm_buffer_append_string(buffer, 
"\"collection\":", 13);
 
 5113            pm_buffer_append_byte(buffer, 
',');
 
 5114            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 5118                pm_buffer_append_string(buffer, 
"null", 4);
 
 5122            pm_buffer_append_byte(buffer, 
',');
 
 5123            pm_buffer_append_string(buffer, 
"\"for_keyword_loc\":", 18);
 
 5127            pm_buffer_append_byte(buffer, 
',');
 
 5128            pm_buffer_append_string(buffer, 
"\"in_keyword_loc\":", 17);
 
 5132            pm_buffer_append_byte(buffer, 
',');
 
 5133            pm_buffer_append_string(buffer, 
"\"do_keyword_loc\":", 17);
 
 5137                pm_buffer_append_string(buffer, 
"null", 4);
 
 5141            pm_buffer_append_byte(buffer, 
',');
 
 5142            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 5145            pm_buffer_append_byte(buffer, 
'}');
 
 5148        case PM_FORWARDING_ARGUMENTS_NODE: {
 
 5149            pm_buffer_append_string(buffer, 
"{\"type\":\"ForwardingArgumentsNode\",\"location\":", 45);
 
 5152            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5154            pm_buffer_append_byte(buffer, 
'}');
 
 5157        case PM_FORWARDING_PARAMETER_NODE: {
 
 5158            pm_buffer_append_string(buffer, 
"{\"type\":\"ForwardingParameterNode\",\"location\":", 45);
 
 5161            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5163            pm_buffer_append_byte(buffer, 
'}');
 
 5166        case PM_FORWARDING_SUPER_NODE: {
 
 5167            pm_buffer_append_string(buffer, 
"{\"type\":\"ForwardingSuperNode\",\"location\":", 41);
 
 5170            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5173            pm_buffer_append_byte(buffer, 
',');
 
 5174            pm_buffer_append_string(buffer, 
"\"block\":", 8);
 
 5175            if (cast->
block != NULL) {
 
 5178                pm_buffer_append_string(buffer, 
"null", 4);
 
 5181            pm_buffer_append_byte(buffer, 
'}');
 
 5184        case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
 
 5185            pm_buffer_append_string(buffer, 
"{\"type\":\"GlobalVariableAndWriteNode\",\"location\":", 48);
 
 5188            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5191            pm_buffer_append_byte(buffer, 
',');
 
 5192            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5193            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5196            pm_buffer_append_byte(buffer, 
',');
 
 5197            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 5198            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 5201            pm_buffer_append_byte(buffer, 
',');
 
 5202            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 5203            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 5206            pm_buffer_append_byte(buffer, 
',');
 
 5207            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5210            pm_buffer_append_byte(buffer, 
'}');
 
 5213        case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
 
 5214            pm_buffer_append_string(buffer, 
"{\"type\":\"GlobalVariableOperatorWriteNode\",\"location\":", 53);
 
 5217            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5220            pm_buffer_append_byte(buffer, 
',');
 
 5221            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5222            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5225            pm_buffer_append_byte(buffer, 
',');
 
 5226            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 5227            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 5230            pm_buffer_append_byte(buffer, 
',');
 
 5231            pm_buffer_append_string(buffer, 
"\"binary_operator_loc\":", 22);
 
 5235            pm_buffer_append_byte(buffer, 
',');
 
 5236            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5240            pm_buffer_append_byte(buffer, 
',');
 
 5241            pm_buffer_append_string(buffer, 
"\"binary_operator\":", 18);
 
 5244            pm_buffer_append_byte(buffer, 
'}');
 
 5247        case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
 
 5248            pm_buffer_append_string(buffer, 
"{\"type\":\"GlobalVariableOrWriteNode\",\"location\":", 47);
 
 5251            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5254            pm_buffer_append_byte(buffer, 
',');
 
 5255            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5256            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5259            pm_buffer_append_byte(buffer, 
',');
 
 5260            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 5261            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 5264            pm_buffer_append_byte(buffer, 
',');
 
 5265            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 5266            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 5269            pm_buffer_append_byte(buffer, 
',');
 
 5270            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5273            pm_buffer_append_byte(buffer, 
'}');
 
 5276        case PM_GLOBAL_VARIABLE_READ_NODE: {
 
 5277            pm_buffer_append_string(buffer, 
"{\"type\":\"GlobalVariableReadNode\",\"location\":", 44);
 
 5280            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5283            pm_buffer_append_byte(buffer, 
',');
 
 5284            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5285            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5287            pm_buffer_append_byte(buffer, 
'}');
 
 5290        case PM_GLOBAL_VARIABLE_TARGET_NODE: {
 
 5291            pm_buffer_append_string(buffer, 
"{\"type\":\"GlobalVariableTargetNode\",\"location\":", 46);
 
 5294            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5297            pm_buffer_append_byte(buffer, 
',');
 
 5298            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5299            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5301            pm_buffer_append_byte(buffer, 
'}');
 
 5304        case PM_GLOBAL_VARIABLE_WRITE_NODE: {
 
 5305            pm_buffer_append_string(buffer, 
"{\"type\":\"GlobalVariableWriteNode\",\"location\":", 45);
 
 5308            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5311            pm_buffer_append_byte(buffer, 
',');
 
 5312            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5313            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5316            pm_buffer_append_byte(buffer, 
',');
 
 5317            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 5318            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 5321            pm_buffer_append_byte(buffer, 
',');
 
 5322            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5326            pm_buffer_append_byte(buffer, 
',');
 
 5327            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 5328            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 5330            pm_buffer_append_byte(buffer, 
'}');
 
 5333        case PM_HASH_NODE: {
 
 5334            pm_buffer_append_string(buffer, 
"{\"type\":\"HashNode\",\"location\":", 30);
 
 5337            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5340            pm_buffer_append_byte(buffer, 
',');
 
 5341            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 5342            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 5345            pm_buffer_append_byte(buffer, 
',');
 
 5346            pm_buffer_append_string(buffer, 
"\"elements\":", 11);
 
 5348            pm_buffer_append_byte(buffer, 
'[');
 
 5350            for (
size_t index = 0; index < elements->
size; index++) {
 
 5351                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 5352                pm_dump_json(buffer, parser, elements->
nodes[index]);
 
 5354            pm_buffer_append_byte(buffer, 
']');
 
 5357            pm_buffer_append_byte(buffer, 
',');
 
 5358            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 5359            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 5361            pm_buffer_append_byte(buffer, 
'}');
 
 5364        case PM_HASH_PATTERN_NODE: {
 
 5365            pm_buffer_append_string(buffer, 
"{\"type\":\"HashPatternNode\",\"location\":", 37);
 
 5368            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5371            pm_buffer_append_byte(buffer, 
',');
 
 5372            pm_buffer_append_string(buffer, 
"\"constant\":", 11);
 
 5376                pm_buffer_append_string(buffer, 
"null", 4);
 
 5380            pm_buffer_append_byte(buffer, 
',');
 
 5381            pm_buffer_append_string(buffer, 
"\"elements\":", 11);
 
 5383            pm_buffer_append_byte(buffer, 
'[');
 
 5385            for (
size_t index = 0; index < elements->
size; index++) {
 
 5386                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 5387                pm_dump_json(buffer, parser, elements->
nodes[index]);
 
 5389            pm_buffer_append_byte(buffer, 
']');
 
 5392            pm_buffer_append_byte(buffer, 
',');
 
 5393            pm_buffer_append_string(buffer, 
"\"rest\":", 7);
 
 5394            if (cast->
rest != NULL) {
 
 5395                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
 
 5397                pm_buffer_append_string(buffer, 
"null", 4);
 
 5401            pm_buffer_append_byte(buffer, 
',');
 
 5402            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 5404                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 5406                pm_buffer_append_string(buffer, 
"null", 4);
 
 5410            pm_buffer_append_byte(buffer, 
',');
 
 5411            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 5413                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 5415                pm_buffer_append_string(buffer, 
"null", 4);
 
 5418            pm_buffer_append_byte(buffer, 
'}');
 
 5422            pm_buffer_append_string(buffer, 
"{\"type\":\"IfNode\",\"location\":", 28);
 
 5425            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5428            pm_buffer_append_byte(buffer, 
',');
 
 5429            pm_buffer_append_string(buffer, 
"\"if_keyword_loc\":", 17);
 
 5433                pm_buffer_append_string(buffer, 
"null", 4);
 
 5437            pm_buffer_append_byte(buffer, 
',');
 
 5438            pm_buffer_append_string(buffer, 
"\"predicate\":", 12);
 
 5442            pm_buffer_append_byte(buffer, 
',');
 
 5443            pm_buffer_append_string(buffer, 
"\"then_keyword_loc\":", 19);
 
 5447                pm_buffer_append_string(buffer, 
"null", 4);
 
 5451            pm_buffer_append_byte(buffer, 
',');
 
 5452            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 5456                pm_buffer_append_string(buffer, 
"null", 4);
 
 5460            pm_buffer_append_byte(buffer, 
',');
 
 5461            pm_buffer_append_string(buffer, 
"\"subsequent\":", 13);
 
 5465                pm_buffer_append_string(buffer, 
"null", 4);
 
 5469            pm_buffer_append_byte(buffer, 
',');
 
 5470            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 5474                pm_buffer_append_string(buffer, 
"null", 4);
 
 5477            pm_buffer_append_byte(buffer, 
'}');
 
 5480        case PM_IMAGINARY_NODE: {
 
 5481            pm_buffer_append_string(buffer, 
"{\"type\":\"ImaginaryNode\",\"location\":", 35);
 
 5484            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5487            pm_buffer_append_byte(buffer, 
',');
 
 5488            pm_buffer_append_string(buffer, 
"\"numeric\":", 10);
 
 5491            pm_buffer_append_byte(buffer, 
'}');
 
 5494        case PM_IMPLICIT_NODE: {
 
 5495            pm_buffer_append_string(buffer, 
"{\"type\":\"ImplicitNode\",\"location\":", 34);
 
 5498            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5501            pm_buffer_append_byte(buffer, 
',');
 
 5502            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5505            pm_buffer_append_byte(buffer, 
'}');
 
 5508        case PM_IMPLICIT_REST_NODE: {
 
 5509            pm_buffer_append_string(buffer, 
"{\"type\":\"ImplicitRestNode\",\"location\":", 38);
 
 5512            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5514            pm_buffer_append_byte(buffer, 
'}');
 
 5518            pm_buffer_append_string(buffer, 
"{\"type\":\"InNode\",\"location\":", 28);
 
 5521            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5524            pm_buffer_append_byte(buffer, 
',');
 
 5525            pm_buffer_append_string(buffer, 
"\"pattern\":", 10);
 
 5529            pm_buffer_append_byte(buffer, 
',');
 
 5530            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 5534                pm_buffer_append_string(buffer, 
"null", 4);
 
 5538            pm_buffer_append_byte(buffer, 
',');
 
 5539            pm_buffer_append_string(buffer, 
"\"in_loc\":", 9);
 
 5540            pm_dump_json_location(buffer, parser, &cast->
in_loc);
 
 5543            pm_buffer_append_byte(buffer, 
',');
 
 5544            pm_buffer_append_string(buffer, 
"\"then_loc\":", 11);
 
 5546                pm_dump_json_location(buffer, parser, &cast->
then_loc);
 
 5548                pm_buffer_append_string(buffer, 
"null", 4);
 
 5551            pm_buffer_append_byte(buffer, 
'}');
 
 5554        case PM_INDEX_AND_WRITE_NODE: {
 
 5555            pm_buffer_append_string(buffer, 
"{\"type\":\"IndexAndWriteNode\",\"location\":", 39);
 
 5558            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5561            pm_buffer_append_byte(buffer, 
',');
 
 5562            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 5564            pm_buffer_append_byte(buffer, 
'[');
 
 5565            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 5566                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5567                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 5570            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 5571                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5572                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 5575            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 5576                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5577                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 5580            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 5581                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5582                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 5585            pm_buffer_append_byte(buffer, 
']');
 
 5588            pm_buffer_append_byte(buffer, 
',');
 
 5589            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 5593                pm_buffer_append_string(buffer, 
"null", 4);
 
 5597            pm_buffer_append_byte(buffer, 
',');
 
 5598            pm_buffer_append_string(buffer, 
"\"call_operator_loc\":", 20);
 
 5602                pm_buffer_append_string(buffer, 
"null", 4);
 
 5606            pm_buffer_append_byte(buffer, 
',');
 
 5607            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 5608            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 5611            pm_buffer_append_byte(buffer, 
',');
 
 5612            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 5616                pm_buffer_append_string(buffer, 
"null", 4);
 
 5620            pm_buffer_append_byte(buffer, 
',');
 
 5621            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 5622            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 5625            pm_buffer_append_byte(buffer, 
',');
 
 5626            pm_buffer_append_string(buffer, 
"\"block\":", 8);
 
 5627            if (cast->
block != NULL) {
 
 5630                pm_buffer_append_string(buffer, 
"null", 4);
 
 5634            pm_buffer_append_byte(buffer, 
',');
 
 5635            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 5636            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 5639            pm_buffer_append_byte(buffer, 
',');
 
 5640            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5643            pm_buffer_append_byte(buffer, 
'}');
 
 5646        case PM_INDEX_OPERATOR_WRITE_NODE: {
 
 5647            pm_buffer_append_string(buffer, 
"{\"type\":\"IndexOperatorWriteNode\",\"location\":", 44);
 
 5650            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5653            pm_buffer_append_byte(buffer, 
',');
 
 5654            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 5656            pm_buffer_append_byte(buffer, 
'[');
 
 5657            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 5658                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5659                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 5662            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 5663                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5664                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 5667            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 5668                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5669                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 5672            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 5673                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5674                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 5677            pm_buffer_append_byte(buffer, 
']');
 
 5680            pm_buffer_append_byte(buffer, 
',');
 
 5681            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 5685                pm_buffer_append_string(buffer, 
"null", 4);
 
 5689            pm_buffer_append_byte(buffer, 
',');
 
 5690            pm_buffer_append_string(buffer, 
"\"call_operator_loc\":", 20);
 
 5694                pm_buffer_append_string(buffer, 
"null", 4);
 
 5698            pm_buffer_append_byte(buffer, 
',');
 
 5699            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 5700            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 5703            pm_buffer_append_byte(buffer, 
',');
 
 5704            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 5708                pm_buffer_append_string(buffer, 
"null", 4);
 
 5712            pm_buffer_append_byte(buffer, 
',');
 
 5713            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 5714            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 5717            pm_buffer_append_byte(buffer, 
',');
 
 5718            pm_buffer_append_string(buffer, 
"\"block\":", 8);
 
 5719            if (cast->
block != NULL) {
 
 5722                pm_buffer_append_string(buffer, 
"null", 4);
 
 5726            pm_buffer_append_byte(buffer, 
',');
 
 5727            pm_buffer_append_string(buffer, 
"\"binary_operator\":", 18);
 
 5731            pm_buffer_append_byte(buffer, 
',');
 
 5732            pm_buffer_append_string(buffer, 
"\"binary_operator_loc\":", 22);
 
 5736            pm_buffer_append_byte(buffer, 
',');
 
 5737            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5740            pm_buffer_append_byte(buffer, 
'}');
 
 5743        case PM_INDEX_OR_WRITE_NODE: {
 
 5744            pm_buffer_append_string(buffer, 
"{\"type\":\"IndexOrWriteNode\",\"location\":", 38);
 
 5747            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5750            pm_buffer_append_byte(buffer, 
',');
 
 5751            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 5753            pm_buffer_append_byte(buffer, 
'[');
 
 5754            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 5755                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5756                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 5759            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 5760                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5761                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 5764            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 5765                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5766                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 5769            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 5770                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5771                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 5774            pm_buffer_append_byte(buffer, 
']');
 
 5777            pm_buffer_append_byte(buffer, 
',');
 
 5778            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 5782                pm_buffer_append_string(buffer, 
"null", 4);
 
 5786            pm_buffer_append_byte(buffer, 
',');
 
 5787            pm_buffer_append_string(buffer, 
"\"call_operator_loc\":", 20);
 
 5791                pm_buffer_append_string(buffer, 
"null", 4);
 
 5795            pm_buffer_append_byte(buffer, 
',');
 
 5796            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 5797            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 5800            pm_buffer_append_byte(buffer, 
',');
 
 5801            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 5805                pm_buffer_append_string(buffer, 
"null", 4);
 
 5809            pm_buffer_append_byte(buffer, 
',');
 
 5810            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 5811            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 5814            pm_buffer_append_byte(buffer, 
',');
 
 5815            pm_buffer_append_string(buffer, 
"\"block\":", 8);
 
 5816            if (cast->
block != NULL) {
 
 5819                pm_buffer_append_string(buffer, 
"null", 4);
 
 5823            pm_buffer_append_byte(buffer, 
',');
 
 5824            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 5825            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 5828            pm_buffer_append_byte(buffer, 
',');
 
 5829            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5832            pm_buffer_append_byte(buffer, 
'}');
 
 5835        case PM_INDEX_TARGET_NODE: {
 
 5836            pm_buffer_append_string(buffer, 
"{\"type\":\"IndexTargetNode\",\"location\":", 37);
 
 5839            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5842            pm_buffer_append_byte(buffer, 
',');
 
 5843            pm_buffer_append_string(buffer, 
"\"CallNodeFlags\":", 16);
 
 5845            pm_buffer_append_byte(buffer, 
'[');
 
 5846            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
 
 5847                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5848                pm_buffer_append_string(buffer, 
"\"SAFE_NAVIGATION\"", 17);
 
 5851            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
 
 5852                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5853                pm_buffer_append_string(buffer, 
"\"VARIABLE_CALL\"", 15);
 
 5856            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
 
 5857                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5858                pm_buffer_append_string(buffer, 
"\"ATTRIBUTE_WRITE\"", 17);
 
 5861            if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
 
 5862                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 5863                pm_buffer_append_string(buffer, 
"\"IGNORE_VISIBILITY\"", 19);
 
 5866            pm_buffer_append_byte(buffer, 
']');
 
 5869            pm_buffer_append_byte(buffer, 
',');
 
 5870            pm_buffer_append_string(buffer, 
"\"receiver\":", 11);
 
 5874            pm_buffer_append_byte(buffer, 
',');
 
 5875            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 5876            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 5879            pm_buffer_append_byte(buffer, 
',');
 
 5880            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 5884                pm_buffer_append_string(buffer, 
"null", 4);
 
 5888            pm_buffer_append_byte(buffer, 
',');
 
 5889            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 5890            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 5893            pm_buffer_append_byte(buffer, 
',');
 
 5894            pm_buffer_append_string(buffer, 
"\"block\":", 8);
 
 5895            if (cast->
block != NULL) {
 
 5898                pm_buffer_append_string(buffer, 
"null", 4);
 
 5901            pm_buffer_append_byte(buffer, 
'}');
 
 5904        case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
 
 5905            pm_buffer_append_string(buffer, 
"{\"type\":\"InstanceVariableAndWriteNode\",\"location\":", 50);
 
 5908            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5911            pm_buffer_append_byte(buffer, 
',');
 
 5912            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5913            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5916            pm_buffer_append_byte(buffer, 
',');
 
 5917            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 5918            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 5921            pm_buffer_append_byte(buffer, 
',');
 
 5922            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 5923            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 5926            pm_buffer_append_byte(buffer, 
',');
 
 5927            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5930            pm_buffer_append_byte(buffer, 
'}');
 
 5933        case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
 
 5934            pm_buffer_append_string(buffer, 
"{\"type\":\"InstanceVariableOperatorWriteNode\",\"location\":", 55);
 
 5937            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5940            pm_buffer_append_byte(buffer, 
',');
 
 5941            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5942            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5945            pm_buffer_append_byte(buffer, 
',');
 
 5946            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 5947            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 5950            pm_buffer_append_byte(buffer, 
',');
 
 5951            pm_buffer_append_string(buffer, 
"\"binary_operator_loc\":", 22);
 
 5955            pm_buffer_append_byte(buffer, 
',');
 
 5956            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5960            pm_buffer_append_byte(buffer, 
',');
 
 5961            pm_buffer_append_string(buffer, 
"\"binary_operator\":", 18);
 
 5964            pm_buffer_append_byte(buffer, 
'}');
 
 5967        case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
 
 5968            pm_buffer_append_string(buffer, 
"{\"type\":\"InstanceVariableOrWriteNode\",\"location\":", 49);
 
 5971            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 5974            pm_buffer_append_byte(buffer, 
',');
 
 5975            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 5976            pm_dump_json_constant(buffer, parser, cast->
name);
 
 5979            pm_buffer_append_byte(buffer, 
',');
 
 5980            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 5981            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 5984            pm_buffer_append_byte(buffer, 
',');
 
 5985            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 5986            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 5989            pm_buffer_append_byte(buffer, 
',');
 
 5990            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 5993            pm_buffer_append_byte(buffer, 
'}');
 
 5996        case PM_INSTANCE_VARIABLE_READ_NODE: {
 
 5997            pm_buffer_append_string(buffer, 
"{\"type\":\"InstanceVariableReadNode\",\"location\":", 46);
 
 6000            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6003            pm_buffer_append_byte(buffer, 
',');
 
 6004            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6005            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6007            pm_buffer_append_byte(buffer, 
'}');
 
 6010        case PM_INSTANCE_VARIABLE_TARGET_NODE: {
 
 6011            pm_buffer_append_string(buffer, 
"{\"type\":\"InstanceVariableTargetNode\",\"location\":", 48);
 
 6014            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6017            pm_buffer_append_byte(buffer, 
',');
 
 6018            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6019            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6021            pm_buffer_append_byte(buffer, 
'}');
 
 6024        case PM_INSTANCE_VARIABLE_WRITE_NODE: {
 
 6025            pm_buffer_append_string(buffer, 
"{\"type\":\"InstanceVariableWriteNode\",\"location\":", 47);
 
 6028            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6031            pm_buffer_append_byte(buffer, 
',');
 
 6032            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6033            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6036            pm_buffer_append_byte(buffer, 
',');
 
 6037            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 6038            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 6041            pm_buffer_append_byte(buffer, 
',');
 
 6042            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 6046            pm_buffer_append_byte(buffer, 
',');
 
 6047            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 6048            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 6050            pm_buffer_append_byte(buffer, 
'}');
 
 6053        case PM_INTEGER_NODE: {
 
 6054            pm_buffer_append_string(buffer, 
"{\"type\":\"IntegerNode\",\"location\":", 33);
 
 6057            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6060            pm_buffer_append_byte(buffer, 
',');
 
 6061            pm_buffer_append_string(buffer, 
"\"IntegerBaseFlags\":", 19);
 
 6063            pm_buffer_append_byte(buffer, 
'[');
 
 6064            if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
 
 6065                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6066                pm_buffer_append_string(buffer, 
"\"BINARY\"", 8);
 
 6069            if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_DECIMAL)) {
 
 6070                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6071                pm_buffer_append_string(buffer, 
"\"DECIMAL\"", 9);
 
 6074            if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_OCTAL)) {
 
 6075                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6076                pm_buffer_append_string(buffer, 
"\"OCTAL\"", 7);
 
 6079            if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_HEXADECIMAL)) {
 
 6080                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6081                pm_buffer_append_string(buffer, 
"\"HEXADECIMAL\"", 13);
 
 6084            pm_buffer_append_byte(buffer, 
']');
 
 6087            pm_buffer_append_byte(buffer, 
',');
 
 6088            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 6091            pm_buffer_append_byte(buffer, 
'}');
 
 6094        case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
 
 6095            pm_buffer_append_string(buffer, 
"{\"type\":\"InterpolatedMatchLastLineNode\",\"location\":", 51);
 
 6098            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6101            pm_buffer_append_byte(buffer, 
',');
 
 6102            pm_buffer_append_string(buffer, 
"\"RegularExpressionFlags\":", 25);
 
 6104            pm_buffer_append_byte(buffer, 
'[');
 
 6105            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
 
 6106                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6107                pm_buffer_append_string(buffer, 
"\"IGNORE_CASE\"", 13);
 
 6110            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
 
 6111                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6112                pm_buffer_append_string(buffer, 
"\"EXTENDED\"", 10);
 
 6115            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
 
 6116                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6117                pm_buffer_append_string(buffer, 
"\"MULTI_LINE\"", 12);
 
 6120            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
 
 6121                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6122                pm_buffer_append_string(buffer, 
"\"ONCE\"", 6);
 
 6125            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
 
 6126                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6127                pm_buffer_append_string(buffer, 
"\"EUC_JP\"", 8);
 
 6130            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
 
 6131                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6132                pm_buffer_append_string(buffer, 
"\"ASCII_8BIT\"", 12);
 
 6135            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
 
 6136                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6137                pm_buffer_append_string(buffer, 
"\"WINDOWS_31J\"", 13);
 
 6140            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
 
 6141                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6142                pm_buffer_append_string(buffer, 
"\"UTF_8\"", 7);
 
 6145            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
 
 6146                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6147                pm_buffer_append_string(buffer, 
"\"FORCED_UTF8_ENCODING\"", 22);
 
 6150            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
 
 6151                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6152                pm_buffer_append_string(buffer, 
"\"FORCED_BINARY_ENCODING\"", 24);
 
 6155            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
 
 6156                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6157                pm_buffer_append_string(buffer, 
"\"FORCED_US_ASCII_ENCODING\"", 26);
 
 6160            pm_buffer_append_byte(buffer, 
']');
 
 6163            pm_buffer_append_byte(buffer, 
',');
 
 6164            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 6165            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 6168            pm_buffer_append_byte(buffer, 
',');
 
 6169            pm_buffer_append_string(buffer, 
"\"parts\":", 8);
 
 6171            pm_buffer_append_byte(buffer, 
'[');
 
 6173            for (
size_t index = 0; index < parts->
size; index++) {
 
 6174                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6175                pm_dump_json(buffer, parser, parts->
nodes[index]);
 
 6177            pm_buffer_append_byte(buffer, 
']');
 
 6180            pm_buffer_append_byte(buffer, 
',');
 
 6181            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 6182            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 6184            pm_buffer_append_byte(buffer, 
'}');
 
 6187        case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
 
 6188            pm_buffer_append_string(buffer, 
"{\"type\":\"InterpolatedRegularExpressionNode\",\"location\":", 55);
 
 6191            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6194            pm_buffer_append_byte(buffer, 
',');
 
 6195            pm_buffer_append_string(buffer, 
"\"RegularExpressionFlags\":", 25);
 
 6197            pm_buffer_append_byte(buffer, 
'[');
 
 6198            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
 
 6199                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6200                pm_buffer_append_string(buffer, 
"\"IGNORE_CASE\"", 13);
 
 6203            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
 
 6204                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6205                pm_buffer_append_string(buffer, 
"\"EXTENDED\"", 10);
 
 6208            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
 
 6209                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6210                pm_buffer_append_string(buffer, 
"\"MULTI_LINE\"", 12);
 
 6213            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
 
 6214                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6215                pm_buffer_append_string(buffer, 
"\"ONCE\"", 6);
 
 6218            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
 
 6219                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6220                pm_buffer_append_string(buffer, 
"\"EUC_JP\"", 8);
 
 6223            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
 
 6224                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6225                pm_buffer_append_string(buffer, 
"\"ASCII_8BIT\"", 12);
 
 6228            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
 
 6229                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6230                pm_buffer_append_string(buffer, 
"\"WINDOWS_31J\"", 13);
 
 6233            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
 
 6234                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6235                pm_buffer_append_string(buffer, 
"\"UTF_8\"", 7);
 
 6238            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
 
 6239                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6240                pm_buffer_append_string(buffer, 
"\"FORCED_UTF8_ENCODING\"", 22);
 
 6243            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
 
 6244                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6245                pm_buffer_append_string(buffer, 
"\"FORCED_BINARY_ENCODING\"", 24);
 
 6248            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
 
 6249                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6250                pm_buffer_append_string(buffer, 
"\"FORCED_US_ASCII_ENCODING\"", 26);
 
 6253            pm_buffer_append_byte(buffer, 
']');
 
 6256            pm_buffer_append_byte(buffer, 
',');
 
 6257            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 6258            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 6261            pm_buffer_append_byte(buffer, 
',');
 
 6262            pm_buffer_append_string(buffer, 
"\"parts\":", 8);
 
 6264            pm_buffer_append_byte(buffer, 
'[');
 
 6266            for (
size_t index = 0; index < parts->
size; index++) {
 
 6267                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6268                pm_dump_json(buffer, parser, parts->
nodes[index]);
 
 6270            pm_buffer_append_byte(buffer, 
']');
 
 6273            pm_buffer_append_byte(buffer, 
',');
 
 6274            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 6275            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 6277            pm_buffer_append_byte(buffer, 
'}');
 
 6280        case PM_INTERPOLATED_STRING_NODE: {
 
 6281            pm_buffer_append_string(buffer, 
"{\"type\":\"InterpolatedStringNode\",\"location\":", 44);
 
 6284            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6287            pm_buffer_append_byte(buffer, 
',');
 
 6288            pm_buffer_append_string(buffer, 
"\"InterpolatedStringNodeFlags\":", 30);
 
 6290            pm_buffer_append_byte(buffer, 
'[');
 
 6291            if (PM_NODE_FLAG_P(cast, PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN)) {
 
 6292                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6293                pm_buffer_append_string(buffer, 
"\"FROZEN\"", 8);
 
 6296            if (PM_NODE_FLAG_P(cast, PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE)) {
 
 6297                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6298                pm_buffer_append_string(buffer, 
"\"MUTABLE\"", 9);
 
 6301            pm_buffer_append_byte(buffer, 
']');
 
 6304            pm_buffer_append_byte(buffer, 
',');
 
 6305            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 6307                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 6309                pm_buffer_append_string(buffer, 
"null", 4);
 
 6313            pm_buffer_append_byte(buffer, 
',');
 
 6314            pm_buffer_append_string(buffer, 
"\"parts\":", 8);
 
 6316            pm_buffer_append_byte(buffer, 
'[');
 
 6318            for (
size_t index = 0; index < parts->
size; index++) {
 
 6319                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6320                pm_dump_json(buffer, parser, parts->
nodes[index]);
 
 6322            pm_buffer_append_byte(buffer, 
']');
 
 6325            pm_buffer_append_byte(buffer, 
',');
 
 6326            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 6328                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 6330                pm_buffer_append_string(buffer, 
"null", 4);
 
 6333            pm_buffer_append_byte(buffer, 
'}');
 
 6336        case PM_INTERPOLATED_SYMBOL_NODE: {
 
 6337            pm_buffer_append_string(buffer, 
"{\"type\":\"InterpolatedSymbolNode\",\"location\":", 44);
 
 6340            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6343            pm_buffer_append_byte(buffer, 
',');
 
 6344            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 6346                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 6348                pm_buffer_append_string(buffer, 
"null", 4);
 
 6352            pm_buffer_append_byte(buffer, 
',');
 
 6353            pm_buffer_append_string(buffer, 
"\"parts\":", 8);
 
 6355            pm_buffer_append_byte(buffer, 
'[');
 
 6357            for (
size_t index = 0; index < parts->
size; index++) {
 
 6358                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6359                pm_dump_json(buffer, parser, parts->
nodes[index]);
 
 6361            pm_buffer_append_byte(buffer, 
']');
 
 6364            pm_buffer_append_byte(buffer, 
',');
 
 6365            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 6367                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 6369                pm_buffer_append_string(buffer, 
"null", 4);
 
 6372            pm_buffer_append_byte(buffer, 
'}');
 
 6375        case PM_INTERPOLATED_X_STRING_NODE: {
 
 6376            pm_buffer_append_string(buffer, 
"{\"type\":\"InterpolatedXStringNode\",\"location\":", 45);
 
 6379            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6382            pm_buffer_append_byte(buffer, 
',');
 
 6383            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 6384            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 6387            pm_buffer_append_byte(buffer, 
',');
 
 6388            pm_buffer_append_string(buffer, 
"\"parts\":", 8);
 
 6390            pm_buffer_append_byte(buffer, 
'[');
 
 6392            for (
size_t index = 0; index < parts->
size; index++) {
 
 6393                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6394                pm_dump_json(buffer, parser, parts->
nodes[index]);
 
 6396            pm_buffer_append_byte(buffer, 
']');
 
 6399            pm_buffer_append_byte(buffer, 
',');
 
 6400            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 6401            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 6403            pm_buffer_append_byte(buffer, 
'}');
 
 6406        case PM_IT_LOCAL_VARIABLE_READ_NODE: {
 
 6407            pm_buffer_append_string(buffer, 
"{\"type\":\"ItLocalVariableReadNode\",\"location\":", 45);
 
 6410            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6412            pm_buffer_append_byte(buffer, 
'}');
 
 6415        case PM_IT_PARAMETERS_NODE: {
 
 6416            pm_buffer_append_string(buffer, 
"{\"type\":\"ItParametersNode\",\"location\":", 38);
 
 6419            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6421            pm_buffer_append_byte(buffer, 
'}');
 
 6424        case PM_KEYWORD_HASH_NODE: {
 
 6425            pm_buffer_append_string(buffer, 
"{\"type\":\"KeywordHashNode\",\"location\":", 37);
 
 6428            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6431            pm_buffer_append_byte(buffer, 
',');
 
 6432            pm_buffer_append_string(buffer, 
"\"KeywordHashNodeFlags\":", 23);
 
 6434            pm_buffer_append_byte(buffer, 
'[');
 
 6435            if (PM_NODE_FLAG_P(cast, PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS)) {
 
 6436                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6437                pm_buffer_append_string(buffer, 
"\"SYMBOL_KEYS\"", 13);
 
 6440            pm_buffer_append_byte(buffer, 
']');
 
 6443            pm_buffer_append_byte(buffer, 
',');
 
 6444            pm_buffer_append_string(buffer, 
"\"elements\":", 11);
 
 6446            pm_buffer_append_byte(buffer, 
'[');
 
 6448            for (
size_t index = 0; index < elements->
size; index++) {
 
 6449                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6450                pm_dump_json(buffer, parser, elements->
nodes[index]);
 
 6452            pm_buffer_append_byte(buffer, 
']');
 
 6454            pm_buffer_append_byte(buffer, 
'}');
 
 6457        case PM_KEYWORD_REST_PARAMETER_NODE: {
 
 6458            pm_buffer_append_string(buffer, 
"{\"type\":\"KeywordRestParameterNode\",\"location\":", 46);
 
 6461            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6464            pm_buffer_append_byte(buffer, 
',');
 
 6465            pm_buffer_append_string(buffer, 
"\"ParameterFlags\":", 17);
 
 6467            pm_buffer_append_byte(buffer, 
'[');
 
 6468            if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
 
 6469                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6470                pm_buffer_append_string(buffer, 
"\"REPEATED_PARAMETER\"", 20);
 
 6473            pm_buffer_append_byte(buffer, 
']');
 
 6476            pm_buffer_append_byte(buffer, 
',');
 
 6477            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6479                pm_dump_json_constant(buffer, parser, cast->
name);
 
 6481                pm_buffer_append_string(buffer, 
"null", 4);
 
 6485            pm_buffer_append_byte(buffer, 
',');
 
 6486            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 6488                pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 6490                pm_buffer_append_string(buffer, 
"null", 4);
 
 6494            pm_buffer_append_byte(buffer, 
',');
 
 6495            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 6496            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 6498            pm_buffer_append_byte(buffer, 
'}');
 
 6501        case PM_LAMBDA_NODE: {
 
 6502            pm_buffer_append_string(buffer, 
"{\"type\":\"LambdaNode\",\"location\":", 32);
 
 6505            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6508            pm_buffer_append_byte(buffer, 
',');
 
 6509            pm_buffer_append_string(buffer, 
"\"locals\":", 9);
 
 6511            pm_buffer_append_byte(buffer, 
'[');
 
 6513            for (
size_t index = 0; index < locals->
size; index++) {
 
 6514                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6515                pm_dump_json_constant(buffer, parser, locals->
ids[index]);
 
 6517            pm_buffer_append_byte(buffer, 
']');
 
 6520            pm_buffer_append_byte(buffer, 
',');
 
 6521            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 6522            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 6525            pm_buffer_append_byte(buffer, 
',');
 
 6526            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 6527            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 6530            pm_buffer_append_byte(buffer, 
',');
 
 6531            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 6532            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 6535            pm_buffer_append_byte(buffer, 
',');
 
 6536            pm_buffer_append_string(buffer, 
"\"parameters\":", 13);
 
 6540                pm_buffer_append_string(buffer, 
"null", 4);
 
 6544            pm_buffer_append_byte(buffer, 
',');
 
 6545            pm_buffer_append_string(buffer, 
"\"body\":", 7);
 
 6546            if (cast->
body != NULL) {
 
 6547                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
 
 6549                pm_buffer_append_string(buffer, 
"null", 4);
 
 6552            pm_buffer_append_byte(buffer, 
'}');
 
 6555        case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
 
 6556            pm_buffer_append_string(buffer, 
"{\"type\":\"LocalVariableAndWriteNode\",\"location\":", 47);
 
 6559            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6562            pm_buffer_append_byte(buffer, 
',');
 
 6563            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 6564            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 6567            pm_buffer_append_byte(buffer, 
',');
 
 6568            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 6569            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 6572            pm_buffer_append_byte(buffer, 
',');
 
 6573            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 6577            pm_buffer_append_byte(buffer, 
',');
 
 6578            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6579            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6582            pm_buffer_append_byte(buffer, 
',');
 
 6583            pm_buffer_append_string(buffer, 
"\"depth\":", 8);
 
 6584            pm_buffer_append_format(buffer, 
"%" PRIu32, cast->
depth);
 
 6586            pm_buffer_append_byte(buffer, 
'}');
 
 6589        case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
 
 6590            pm_buffer_append_string(buffer, 
"{\"type\":\"LocalVariableOperatorWriteNode\",\"location\":", 52);
 
 6593            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6596            pm_buffer_append_byte(buffer, 
',');
 
 6597            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 6598            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 6601            pm_buffer_append_byte(buffer, 
',');
 
 6602            pm_buffer_append_string(buffer, 
"\"binary_operator_loc\":", 22);
 
 6606            pm_buffer_append_byte(buffer, 
',');
 
 6607            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 6611            pm_buffer_append_byte(buffer, 
',');
 
 6612            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6613            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6616            pm_buffer_append_byte(buffer, 
',');
 
 6617            pm_buffer_append_string(buffer, 
"\"binary_operator\":", 18);
 
 6621            pm_buffer_append_byte(buffer, 
',');
 
 6622            pm_buffer_append_string(buffer, 
"\"depth\":", 8);
 
 6623            pm_buffer_append_format(buffer, 
"%" PRIu32, cast->
depth);
 
 6625            pm_buffer_append_byte(buffer, 
'}');
 
 6628        case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
 
 6629            pm_buffer_append_string(buffer, 
"{\"type\":\"LocalVariableOrWriteNode\",\"location\":", 46);
 
 6632            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6635            pm_buffer_append_byte(buffer, 
',');
 
 6636            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 6637            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 6640            pm_buffer_append_byte(buffer, 
',');
 
 6641            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 6642            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 6645            pm_buffer_append_byte(buffer, 
',');
 
 6646            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 6650            pm_buffer_append_byte(buffer, 
',');
 
 6651            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6652            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6655            pm_buffer_append_byte(buffer, 
',');
 
 6656            pm_buffer_append_string(buffer, 
"\"depth\":", 8);
 
 6657            pm_buffer_append_format(buffer, 
"%" PRIu32, cast->
depth);
 
 6659            pm_buffer_append_byte(buffer, 
'}');
 
 6662        case PM_LOCAL_VARIABLE_READ_NODE: {
 
 6663            pm_buffer_append_string(buffer, 
"{\"type\":\"LocalVariableReadNode\",\"location\":", 43);
 
 6666            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6669            pm_buffer_append_byte(buffer, 
',');
 
 6670            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6671            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6674            pm_buffer_append_byte(buffer, 
',');
 
 6675            pm_buffer_append_string(buffer, 
"\"depth\":", 8);
 
 6676            pm_buffer_append_format(buffer, 
"%" PRIu32, cast->
depth);
 
 6678            pm_buffer_append_byte(buffer, 
'}');
 
 6681        case PM_LOCAL_VARIABLE_TARGET_NODE: {
 
 6682            pm_buffer_append_string(buffer, 
"{\"type\":\"LocalVariableTargetNode\",\"location\":", 45);
 
 6685            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6688            pm_buffer_append_byte(buffer, 
',');
 
 6689            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6690            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6693            pm_buffer_append_byte(buffer, 
',');
 
 6694            pm_buffer_append_string(buffer, 
"\"depth\":", 8);
 
 6695            pm_buffer_append_format(buffer, 
"%" PRIu32, cast->
depth);
 
 6697            pm_buffer_append_byte(buffer, 
'}');
 
 6700        case PM_LOCAL_VARIABLE_WRITE_NODE: {
 
 6701            pm_buffer_append_string(buffer, 
"{\"type\":\"LocalVariableWriteNode\",\"location\":", 44);
 
 6704            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6707            pm_buffer_append_byte(buffer, 
',');
 
 6708            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6709            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6712            pm_buffer_append_byte(buffer, 
',');
 
 6713            pm_buffer_append_string(buffer, 
"\"depth\":", 8);
 
 6714            pm_buffer_append_format(buffer, 
"%" PRIu32, cast->
depth);
 
 6717            pm_buffer_append_byte(buffer, 
',');
 
 6718            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 6719            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 6722            pm_buffer_append_byte(buffer, 
',');
 
 6723            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 6727            pm_buffer_append_byte(buffer, 
',');
 
 6728            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 6729            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 6731            pm_buffer_append_byte(buffer, 
'}');
 
 6734        case PM_MATCH_LAST_LINE_NODE: {
 
 6735            pm_buffer_append_string(buffer, 
"{\"type\":\"MatchLastLineNode\",\"location\":", 39);
 
 6738            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6741            pm_buffer_append_byte(buffer, 
',');
 
 6742            pm_buffer_append_string(buffer, 
"\"RegularExpressionFlags\":", 25);
 
 6744            pm_buffer_append_byte(buffer, 
'[');
 
 6745            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
 
 6746                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6747                pm_buffer_append_string(buffer, 
"\"IGNORE_CASE\"", 13);
 
 6750            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
 
 6751                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6752                pm_buffer_append_string(buffer, 
"\"EXTENDED\"", 10);
 
 6755            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
 
 6756                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6757                pm_buffer_append_string(buffer, 
"\"MULTI_LINE\"", 12);
 
 6760            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
 
 6761                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6762                pm_buffer_append_string(buffer, 
"\"ONCE\"", 6);
 
 6765            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
 
 6766                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6767                pm_buffer_append_string(buffer, 
"\"EUC_JP\"", 8);
 
 6770            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
 
 6771                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6772                pm_buffer_append_string(buffer, 
"\"ASCII_8BIT\"", 12);
 
 6775            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
 
 6776                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6777                pm_buffer_append_string(buffer, 
"\"WINDOWS_31J\"", 13);
 
 6780            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
 
 6781                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6782                pm_buffer_append_string(buffer, 
"\"UTF_8\"", 7);
 
 6785            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
 
 6786                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6787                pm_buffer_append_string(buffer, 
"\"FORCED_UTF8_ENCODING\"", 22);
 
 6790            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
 
 6791                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6792                pm_buffer_append_string(buffer, 
"\"FORCED_BINARY_ENCODING\"", 24);
 
 6795            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
 
 6796                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 6797                pm_buffer_append_string(buffer, 
"\"FORCED_US_ASCII_ENCODING\"", 26);
 
 6800            pm_buffer_append_byte(buffer, 
']');
 
 6803            pm_buffer_append_byte(buffer, 
',');
 
 6804            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 6805            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 6808            pm_buffer_append_byte(buffer, 
',');
 
 6809            pm_buffer_append_string(buffer, 
"\"content_loc\":", 14);
 
 6810            pm_dump_json_location(buffer, parser, &cast->
content_loc);
 
 6813            pm_buffer_append_byte(buffer, 
',');
 
 6814            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 6815            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 6818            pm_buffer_append_byte(buffer, 
',');
 
 6819            pm_buffer_append_string(buffer, 
"\"unescaped\":", 12);
 
 6821            pm_buffer_append_byte(buffer, 
'"');
 
 6823            pm_buffer_append_byte(buffer, 
'"');
 
 6825            pm_buffer_append_byte(buffer, 
'}');
 
 6828        case PM_MATCH_PREDICATE_NODE: {
 
 6829            pm_buffer_append_string(buffer, 
"{\"type\":\"MatchPredicateNode\",\"location\":", 40);
 
 6832            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6835            pm_buffer_append_byte(buffer, 
',');
 
 6836            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 6840            pm_buffer_append_byte(buffer, 
',');
 
 6841            pm_buffer_append_string(buffer, 
"\"pattern\":", 10);
 
 6845            pm_buffer_append_byte(buffer, 
',');
 
 6846            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 6847            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 6849            pm_buffer_append_byte(buffer, 
'}');
 
 6852        case PM_MATCH_REQUIRED_NODE: {
 
 6853            pm_buffer_append_string(buffer, 
"{\"type\":\"MatchRequiredNode\",\"location\":", 39);
 
 6856            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6859            pm_buffer_append_byte(buffer, 
',');
 
 6860            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 6864            pm_buffer_append_byte(buffer, 
',');
 
 6865            pm_buffer_append_string(buffer, 
"\"pattern\":", 10);
 
 6869            pm_buffer_append_byte(buffer, 
',');
 
 6870            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 6871            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 6873            pm_buffer_append_byte(buffer, 
'}');
 
 6876        case PM_MATCH_WRITE_NODE: {
 
 6877            pm_buffer_append_string(buffer, 
"{\"type\":\"MatchWriteNode\",\"location\":", 36);
 
 6880            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6883            pm_buffer_append_byte(buffer, 
',');
 
 6884            pm_buffer_append_string(buffer, 
"\"call\":", 7);
 
 6885            pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
call);
 
 6888            pm_buffer_append_byte(buffer, 
',');
 
 6889            pm_buffer_append_string(buffer, 
"\"targets\":", 10);
 
 6891            pm_buffer_append_byte(buffer, 
'[');
 
 6893            for (
size_t index = 0; index < targets->
size; index++) {
 
 6894                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6895                pm_dump_json(buffer, parser, targets->
nodes[index]);
 
 6897            pm_buffer_append_byte(buffer, 
']');
 
 6899            pm_buffer_append_byte(buffer, 
'}');
 
 6902        case PM_MISSING_NODE: {
 
 6903            pm_buffer_append_string(buffer, 
"{\"type\":\"MissingNode\",\"location\":", 33);
 
 6906            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6908            pm_buffer_append_byte(buffer, 
'}');
 
 6911        case PM_MODULE_NODE: {
 
 6912            pm_buffer_append_string(buffer, 
"{\"type\":\"ModuleNode\",\"location\":", 32);
 
 6915            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6918            pm_buffer_append_byte(buffer, 
',');
 
 6919            pm_buffer_append_string(buffer, 
"\"locals\":", 9);
 
 6921            pm_buffer_append_byte(buffer, 
'[');
 
 6923            for (
size_t index = 0; index < locals->
size; index++) {
 
 6924                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6925                pm_dump_json_constant(buffer, parser, locals->
ids[index]);
 
 6927            pm_buffer_append_byte(buffer, 
']');
 
 6930            pm_buffer_append_byte(buffer, 
',');
 
 6931            pm_buffer_append_string(buffer, 
"\"module_keyword_loc\":", 21);
 
 6935            pm_buffer_append_byte(buffer, 
',');
 
 6936            pm_buffer_append_string(buffer, 
"\"constant_path\":", 16);
 
 6940            pm_buffer_append_byte(buffer, 
',');
 
 6941            pm_buffer_append_string(buffer, 
"\"body\":", 7);
 
 6942            if (cast->
body != NULL) {
 
 6943                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
 
 6945                pm_buffer_append_string(buffer, 
"null", 4);
 
 6949            pm_buffer_append_byte(buffer, 
',');
 
 6950            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 6954            pm_buffer_append_byte(buffer, 
',');
 
 6955            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 6956            pm_dump_json_constant(buffer, parser, cast->
name);
 
 6958            pm_buffer_append_byte(buffer, 
'}');
 
 6961        case PM_MULTI_TARGET_NODE: {
 
 6962            pm_buffer_append_string(buffer, 
"{\"type\":\"MultiTargetNode\",\"location\":", 37);
 
 6965            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 6968            pm_buffer_append_byte(buffer, 
',');
 
 6969            pm_buffer_append_string(buffer, 
"\"lefts\":", 8);
 
 6971            pm_buffer_append_byte(buffer, 
'[');
 
 6973            for (
size_t index = 0; index < lefts->
size; index++) {
 
 6974                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6975                pm_dump_json(buffer, parser, lefts->
nodes[index]);
 
 6977            pm_buffer_append_byte(buffer, 
']');
 
 6980            pm_buffer_append_byte(buffer, 
',');
 
 6981            pm_buffer_append_string(buffer, 
"\"rest\":", 7);
 
 6982            if (cast->
rest != NULL) {
 
 6983                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
 
 6985                pm_buffer_append_string(buffer, 
"null", 4);
 
 6989            pm_buffer_append_byte(buffer, 
',');
 
 6990            pm_buffer_append_string(buffer, 
"\"rights\":", 9);
 
 6992            pm_buffer_append_byte(buffer, 
'[');
 
 6994            for (
size_t index = 0; index < rights->
size; index++) {
 
 6995                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 6996                pm_dump_json(buffer, parser, rights->
nodes[index]);
 
 6998            pm_buffer_append_byte(buffer, 
']');
 
 7001            pm_buffer_append_byte(buffer, 
',');
 
 7002            pm_buffer_append_string(buffer, 
"\"lparen_loc\":", 13);
 
 7004                pm_dump_json_location(buffer, parser, &cast->
lparen_loc);
 
 7006                pm_buffer_append_string(buffer, 
"null", 4);
 
 7010            pm_buffer_append_byte(buffer, 
',');
 
 7011            pm_buffer_append_string(buffer, 
"\"rparen_loc\":", 13);
 
 7013                pm_dump_json_location(buffer, parser, &cast->
rparen_loc);
 
 7015                pm_buffer_append_string(buffer, 
"null", 4);
 
 7018            pm_buffer_append_byte(buffer, 
'}');
 
 7021        case PM_MULTI_WRITE_NODE: {
 
 7022            pm_buffer_append_string(buffer, 
"{\"type\":\"MultiWriteNode\",\"location\":", 36);
 
 7025            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7028            pm_buffer_append_byte(buffer, 
',');
 
 7029            pm_buffer_append_string(buffer, 
"\"lefts\":", 8);
 
 7031            pm_buffer_append_byte(buffer, 
'[');
 
 7033            for (
size_t index = 0; index < lefts->
size; index++) {
 
 7034                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 7035                pm_dump_json(buffer, parser, lefts->
nodes[index]);
 
 7037            pm_buffer_append_byte(buffer, 
']');
 
 7040            pm_buffer_append_byte(buffer, 
',');
 
 7041            pm_buffer_append_string(buffer, 
"\"rest\":", 7);
 
 7042            if (cast->
rest != NULL) {
 
 7043                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
 
 7045                pm_buffer_append_string(buffer, 
"null", 4);
 
 7049            pm_buffer_append_byte(buffer, 
',');
 
 7050            pm_buffer_append_string(buffer, 
"\"rights\":", 9);
 
 7052            pm_buffer_append_byte(buffer, 
'[');
 
 7054            for (
size_t index = 0; index < rights->
size; index++) {
 
 7055                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 7056                pm_dump_json(buffer, parser, rights->
nodes[index]);
 
 7058            pm_buffer_append_byte(buffer, 
']');
 
 7061            pm_buffer_append_byte(buffer, 
',');
 
 7062            pm_buffer_append_string(buffer, 
"\"lparen_loc\":", 13);
 
 7064                pm_dump_json_location(buffer, parser, &cast->
lparen_loc);
 
 7066                pm_buffer_append_string(buffer, 
"null", 4);
 
 7070            pm_buffer_append_byte(buffer, 
',');
 
 7071            pm_buffer_append_string(buffer, 
"\"rparen_loc\":", 13);
 
 7073                pm_dump_json_location(buffer, parser, &cast->
rparen_loc);
 
 7075                pm_buffer_append_string(buffer, 
"null", 4);
 
 7079            pm_buffer_append_byte(buffer, 
',');
 
 7080            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7081            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7084            pm_buffer_append_byte(buffer, 
',');
 
 7085            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 7088            pm_buffer_append_byte(buffer, 
'}');
 
 7091        case PM_NEXT_NODE: {
 
 7092            pm_buffer_append_string(buffer, 
"{\"type\":\"NextNode\",\"location\":", 30);
 
 7095            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7098            pm_buffer_append_byte(buffer, 
',');
 
 7099            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 7103                pm_buffer_append_string(buffer, 
"null", 4);
 
 7107            pm_buffer_append_byte(buffer, 
',');
 
 7108            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 7109            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 7111            pm_buffer_append_byte(buffer, 
'}');
 
 7115            pm_buffer_append_string(buffer, 
"{\"type\":\"NilNode\",\"location\":", 29);
 
 7118            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7120            pm_buffer_append_byte(buffer, 
'}');
 
 7123        case PM_NO_KEYWORDS_PARAMETER_NODE: {
 
 7124            pm_buffer_append_string(buffer, 
"{\"type\":\"NoKeywordsParameterNode\",\"location\":", 45);
 
 7127            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7130            pm_buffer_append_byte(buffer, 
',');
 
 7131            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7132            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7135            pm_buffer_append_byte(buffer, 
',');
 
 7136            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 7137            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 7139            pm_buffer_append_byte(buffer, 
'}');
 
 7142        case PM_NUMBERED_PARAMETERS_NODE: {
 
 7143            pm_buffer_append_string(buffer, 
"{\"type\":\"NumberedParametersNode\",\"location\":", 44);
 
 7146            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7149            pm_buffer_append_byte(buffer, 
',');
 
 7150            pm_buffer_append_string(buffer, 
"\"maximum\":", 10);
 
 7151            pm_buffer_append_format(buffer, 
"%" PRIu8, cast->
maximum);
 
 7153            pm_buffer_append_byte(buffer, 
'}');
 
 7156        case PM_NUMBERED_REFERENCE_READ_NODE: {
 
 7157            pm_buffer_append_string(buffer, 
"{\"type\":\"NumberedReferenceReadNode\",\"location\":", 47);
 
 7160            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7163            pm_buffer_append_byte(buffer, 
',');
 
 7164            pm_buffer_append_string(buffer, 
"\"number\":", 9);
 
 7165            pm_buffer_append_format(buffer, 
"%" PRIu32, cast->
number);
 
 7167            pm_buffer_append_byte(buffer, 
'}');
 
 7170        case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
 
 7171            pm_buffer_append_string(buffer, 
"{\"type\":\"OptionalKeywordParameterNode\",\"location\":", 50);
 
 7174            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7177            pm_buffer_append_byte(buffer, 
',');
 
 7178            pm_buffer_append_string(buffer, 
"\"ParameterFlags\":", 17);
 
 7180            pm_buffer_append_byte(buffer, 
'[');
 
 7181            if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
 
 7182                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7183                pm_buffer_append_string(buffer, 
"\"REPEATED_PARAMETER\"", 20);
 
 7186            pm_buffer_append_byte(buffer, 
']');
 
 7189            pm_buffer_append_byte(buffer, 
',');
 
 7190            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 7191            pm_dump_json_constant(buffer, parser, cast->
name);
 
 7194            pm_buffer_append_byte(buffer, 
',');
 
 7195            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 7196            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 7199            pm_buffer_append_byte(buffer, 
',');
 
 7200            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 7203            pm_buffer_append_byte(buffer, 
'}');
 
 7206        case PM_OPTIONAL_PARAMETER_NODE: {
 
 7207            pm_buffer_append_string(buffer, 
"{\"type\":\"OptionalParameterNode\",\"location\":", 43);
 
 7210            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7213            pm_buffer_append_byte(buffer, 
',');
 
 7214            pm_buffer_append_string(buffer, 
"\"ParameterFlags\":", 17);
 
 7216            pm_buffer_append_byte(buffer, 
'[');
 
 7217            if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
 
 7218                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7219                pm_buffer_append_string(buffer, 
"\"REPEATED_PARAMETER\"", 20);
 
 7222            pm_buffer_append_byte(buffer, 
']');
 
 7225            pm_buffer_append_byte(buffer, 
',');
 
 7226            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 7227            pm_dump_json_constant(buffer, parser, cast->
name);
 
 7230            pm_buffer_append_byte(buffer, 
',');
 
 7231            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 7232            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 7235            pm_buffer_append_byte(buffer, 
',');
 
 7236            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7237            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7240            pm_buffer_append_byte(buffer, 
',');
 
 7241            pm_buffer_append_string(buffer, 
"\"value\":", 8);
 
 7244            pm_buffer_append_byte(buffer, 
'}');
 
 7248            pm_buffer_append_string(buffer, 
"{\"type\":\"OrNode\",\"location\":", 28);
 
 7251            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7254            pm_buffer_append_byte(buffer, 
',');
 
 7255            pm_buffer_append_string(buffer, 
"\"left\":", 7);
 
 7256            pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
 
 7259            pm_buffer_append_byte(buffer, 
',');
 
 7260            pm_buffer_append_string(buffer, 
"\"right\":", 8);
 
 7264            pm_buffer_append_byte(buffer, 
',');
 
 7265            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7266            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7268            pm_buffer_append_byte(buffer, 
'}');
 
 7271        case PM_PARAMETERS_NODE: {
 
 7272            pm_buffer_append_string(buffer, 
"{\"type\":\"ParametersNode\",\"location\":", 36);
 
 7275            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7278            pm_buffer_append_byte(buffer, 
',');
 
 7279            pm_buffer_append_string(buffer, 
"\"requireds\":", 12);
 
 7281            pm_buffer_append_byte(buffer, 
'[');
 
 7283            for (
size_t index = 0; index < requireds->
size; index++) {
 
 7284                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 7285                pm_dump_json(buffer, parser, requireds->
nodes[index]);
 
 7287            pm_buffer_append_byte(buffer, 
']');
 
 7290            pm_buffer_append_byte(buffer, 
',');
 
 7291            pm_buffer_append_string(buffer, 
"\"optionals\":", 12);
 
 7293            pm_buffer_append_byte(buffer, 
'[');
 
 7295            for (
size_t index = 0; index < optionals->
size; index++) {
 
 7296                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 7297                pm_dump_json(buffer, parser, optionals->
nodes[index]);
 
 7299            pm_buffer_append_byte(buffer, 
']');
 
 7302            pm_buffer_append_byte(buffer, 
',');
 
 7303            pm_buffer_append_string(buffer, 
"\"rest\":", 7);
 
 7304            if (cast->
rest != NULL) {
 
 7305                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
 
 7307                pm_buffer_append_string(buffer, 
"null", 4);
 
 7311            pm_buffer_append_byte(buffer, 
',');
 
 7312            pm_buffer_append_string(buffer, 
"\"posts\":", 8);
 
 7314            pm_buffer_append_byte(buffer, 
'[');
 
 7316            for (
size_t index = 0; index < posts->
size; index++) {
 
 7317                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 7318                pm_dump_json(buffer, parser, posts->
nodes[index]);
 
 7320            pm_buffer_append_byte(buffer, 
']');
 
 7323            pm_buffer_append_byte(buffer, 
',');
 
 7324            pm_buffer_append_string(buffer, 
"\"keywords\":", 11);
 
 7326            pm_buffer_append_byte(buffer, 
'[');
 
 7328            for (
size_t index = 0; index < keywords->
size; index++) {
 
 7329                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 7330                pm_dump_json(buffer, parser, keywords->
nodes[index]);
 
 7332            pm_buffer_append_byte(buffer, 
']');
 
 7335            pm_buffer_append_byte(buffer, 
',');
 
 7336            pm_buffer_append_string(buffer, 
"\"keyword_rest\":", 15);
 
 7340                pm_buffer_append_string(buffer, 
"null", 4);
 
 7344            pm_buffer_append_byte(buffer, 
',');
 
 7345            pm_buffer_append_string(buffer, 
"\"block\":", 8);
 
 7346            if (cast->
block != NULL) {
 
 7349                pm_buffer_append_string(buffer, 
"null", 4);
 
 7352            pm_buffer_append_byte(buffer, 
'}');
 
 7355        case PM_PARENTHESES_NODE: {
 
 7356            pm_buffer_append_string(buffer, 
"{\"type\":\"ParenthesesNode\",\"location\":", 37);
 
 7359            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7362            pm_buffer_append_byte(buffer, 
',');
 
 7363            pm_buffer_append_string(buffer, 
"\"ParenthesesNodeFlags\":", 23);
 
 7365            pm_buffer_append_byte(buffer, 
'[');
 
 7366            if (PM_NODE_FLAG_P(cast, PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS)) {
 
 7367                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7368                pm_buffer_append_string(buffer, 
"\"MULTIPLE_STATEMENTS\"", 21);
 
 7371            pm_buffer_append_byte(buffer, 
']');
 
 7374            pm_buffer_append_byte(buffer, 
',');
 
 7375            pm_buffer_append_string(buffer, 
"\"body\":", 7);
 
 7376            if (cast->
body != NULL) {
 
 7377                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
 
 7379                pm_buffer_append_string(buffer, 
"null", 4);
 
 7383            pm_buffer_append_byte(buffer, 
',');
 
 7384            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 7385            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 7388            pm_buffer_append_byte(buffer, 
',');
 
 7389            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 7390            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 7392            pm_buffer_append_byte(buffer, 
'}');
 
 7395        case PM_PINNED_EXPRESSION_NODE: {
 
 7396            pm_buffer_append_string(buffer, 
"{\"type\":\"PinnedExpressionNode\",\"location\":", 42);
 
 7399            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7402            pm_buffer_append_byte(buffer, 
',');
 
 7403            pm_buffer_append_string(buffer, 
"\"expression\":", 13);
 
 7407            pm_buffer_append_byte(buffer, 
',');
 
 7408            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7409            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7412            pm_buffer_append_byte(buffer, 
',');
 
 7413            pm_buffer_append_string(buffer, 
"\"lparen_loc\":", 13);
 
 7414            pm_dump_json_location(buffer, parser, &cast->
lparen_loc);
 
 7417            pm_buffer_append_byte(buffer, 
',');
 
 7418            pm_buffer_append_string(buffer, 
"\"rparen_loc\":", 13);
 
 7419            pm_dump_json_location(buffer, parser, &cast->
rparen_loc);
 
 7421            pm_buffer_append_byte(buffer, 
'}');
 
 7424        case PM_PINNED_VARIABLE_NODE: {
 
 7425            pm_buffer_append_string(buffer, 
"{\"type\":\"PinnedVariableNode\",\"location\":", 40);
 
 7428            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7431            pm_buffer_append_byte(buffer, 
',');
 
 7432            pm_buffer_append_string(buffer, 
"\"variable\":", 11);
 
 7436            pm_buffer_append_byte(buffer, 
',');
 
 7437            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7438            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7440            pm_buffer_append_byte(buffer, 
'}');
 
 7443        case PM_POST_EXECUTION_NODE: {
 
 7444            pm_buffer_append_string(buffer, 
"{\"type\":\"PostExecutionNode\",\"location\":", 39);
 
 7447            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7450            pm_buffer_append_byte(buffer, 
',');
 
 7451            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 7455                pm_buffer_append_string(buffer, 
"null", 4);
 
 7459            pm_buffer_append_byte(buffer, 
',');
 
 7460            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 7461            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 7464            pm_buffer_append_byte(buffer, 
',');
 
 7465            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 7466            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 7469            pm_buffer_append_byte(buffer, 
',');
 
 7470            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 7471            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 7473            pm_buffer_append_byte(buffer, 
'}');
 
 7476        case PM_PRE_EXECUTION_NODE: {
 
 7477            pm_buffer_append_string(buffer, 
"{\"type\":\"PreExecutionNode\",\"location\":", 38);
 
 7480            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7483            pm_buffer_append_byte(buffer, 
',');
 
 7484            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 7488                pm_buffer_append_string(buffer, 
"null", 4);
 
 7492            pm_buffer_append_byte(buffer, 
',');
 
 7493            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 7494            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 7497            pm_buffer_append_byte(buffer, 
',');
 
 7498            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 7499            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 7502            pm_buffer_append_byte(buffer, 
',');
 
 7503            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 7504            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 7506            pm_buffer_append_byte(buffer, 
'}');
 
 7509        case PM_PROGRAM_NODE: {
 
 7510            pm_buffer_append_string(buffer, 
"{\"type\":\"ProgramNode\",\"location\":", 33);
 
 7513            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7516            pm_buffer_append_byte(buffer, 
',');
 
 7517            pm_buffer_append_string(buffer, 
"\"locals\":", 9);
 
 7519            pm_buffer_append_byte(buffer, 
'[');
 
 7521            for (
size_t index = 0; index < locals->
size; index++) {
 
 7522                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 7523                pm_dump_json_constant(buffer, parser, locals->
ids[index]);
 
 7525            pm_buffer_append_byte(buffer, 
']');
 
 7528            pm_buffer_append_byte(buffer, 
',');
 
 7529            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 7532            pm_buffer_append_byte(buffer, 
'}');
 
 7535        case PM_RANGE_NODE: {
 
 7536            pm_buffer_append_string(buffer, 
"{\"type\":\"RangeNode\",\"location\":", 31);
 
 7539            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7542            pm_buffer_append_byte(buffer, 
',');
 
 7543            pm_buffer_append_string(buffer, 
"\"RangeFlags\":", 13);
 
 7545            pm_buffer_append_byte(buffer, 
'[');
 
 7546            if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
 
 7547                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7548                pm_buffer_append_string(buffer, 
"\"EXCLUDE_END\"", 13);
 
 7551            pm_buffer_append_byte(buffer, 
']');
 
 7554            pm_buffer_append_byte(buffer, 
',');
 
 7555            pm_buffer_append_string(buffer, 
"\"left\":", 7);
 
 7556            if (cast->
left != NULL) {
 
 7557                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
 
 7559                pm_buffer_append_string(buffer, 
"null", 4);
 
 7563            pm_buffer_append_byte(buffer, 
',');
 
 7564            pm_buffer_append_string(buffer, 
"\"right\":", 8);
 
 7565            if (cast->
right != NULL) {
 
 7568                pm_buffer_append_string(buffer, 
"null", 4);
 
 7572            pm_buffer_append_byte(buffer, 
',');
 
 7573            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7574            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7576            pm_buffer_append_byte(buffer, 
'}');
 
 7579        case PM_RATIONAL_NODE: {
 
 7580            pm_buffer_append_string(buffer, 
"{\"type\":\"RationalNode\",\"location\":", 34);
 
 7583            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7586            pm_buffer_append_byte(buffer, 
',');
 
 7587            pm_buffer_append_string(buffer, 
"\"IntegerBaseFlags\":", 19);
 
 7589            pm_buffer_append_byte(buffer, 
'[');
 
 7590            if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
 
 7591                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7592                pm_buffer_append_string(buffer, 
"\"BINARY\"", 8);
 
 7595            if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_DECIMAL)) {
 
 7596                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7597                pm_buffer_append_string(buffer, 
"\"DECIMAL\"", 9);
 
 7600            if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_OCTAL)) {
 
 7601                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7602                pm_buffer_append_string(buffer, 
"\"OCTAL\"", 7);
 
 7605            if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_HEXADECIMAL)) {
 
 7606                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7607                pm_buffer_append_string(buffer, 
"\"HEXADECIMAL\"", 13);
 
 7610            pm_buffer_append_byte(buffer, 
']');
 
 7613            pm_buffer_append_byte(buffer, 
',');
 
 7614            pm_buffer_append_string(buffer, 
"\"numerator\":", 12);
 
 7618            pm_buffer_append_byte(buffer, 
',');
 
 7619            pm_buffer_append_string(buffer, 
"\"denominator\":", 14);
 
 7622            pm_buffer_append_byte(buffer, 
'}');
 
 7625        case PM_REDO_NODE: {
 
 7626            pm_buffer_append_string(buffer, 
"{\"type\":\"RedoNode\",\"location\":", 30);
 
 7629            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7631            pm_buffer_append_byte(buffer, 
'}');
 
 7634        case PM_REGULAR_EXPRESSION_NODE: {
 
 7635            pm_buffer_append_string(buffer, 
"{\"type\":\"RegularExpressionNode\",\"location\":", 43);
 
 7638            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7641            pm_buffer_append_byte(buffer, 
',');
 
 7642            pm_buffer_append_string(buffer, 
"\"RegularExpressionFlags\":", 25);
 
 7644            pm_buffer_append_byte(buffer, 
'[');
 
 7645            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
 
 7646                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7647                pm_buffer_append_string(buffer, 
"\"IGNORE_CASE\"", 13);
 
 7650            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
 
 7651                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7652                pm_buffer_append_string(buffer, 
"\"EXTENDED\"", 10);
 
 7655            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
 
 7656                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7657                pm_buffer_append_string(buffer, 
"\"MULTI_LINE\"", 12);
 
 7660            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
 
 7661                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7662                pm_buffer_append_string(buffer, 
"\"ONCE\"", 6);
 
 7665            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
 
 7666                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7667                pm_buffer_append_string(buffer, 
"\"EUC_JP\"", 8);
 
 7670            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
 
 7671                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7672                pm_buffer_append_string(buffer, 
"\"ASCII_8BIT\"", 12);
 
 7675            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
 
 7676                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7677                pm_buffer_append_string(buffer, 
"\"WINDOWS_31J\"", 13);
 
 7680            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
 
 7681                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7682                pm_buffer_append_string(buffer, 
"\"UTF_8\"", 7);
 
 7685            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
 
 7686                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7687                pm_buffer_append_string(buffer, 
"\"FORCED_UTF8_ENCODING\"", 22);
 
 7690            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
 
 7691                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7692                pm_buffer_append_string(buffer, 
"\"FORCED_BINARY_ENCODING\"", 24);
 
 7695            if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
 
 7696                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7697                pm_buffer_append_string(buffer, 
"\"FORCED_US_ASCII_ENCODING\"", 26);
 
 7700            pm_buffer_append_byte(buffer, 
']');
 
 7703            pm_buffer_append_byte(buffer, 
',');
 
 7704            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 7705            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 7708            pm_buffer_append_byte(buffer, 
',');
 
 7709            pm_buffer_append_string(buffer, 
"\"content_loc\":", 14);
 
 7710            pm_dump_json_location(buffer, parser, &cast->
content_loc);
 
 7713            pm_buffer_append_byte(buffer, 
',');
 
 7714            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 7715            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 7718            pm_buffer_append_byte(buffer, 
',');
 
 7719            pm_buffer_append_string(buffer, 
"\"unescaped\":", 12);
 
 7721            pm_buffer_append_byte(buffer, 
'"');
 
 7723            pm_buffer_append_byte(buffer, 
'"');
 
 7725            pm_buffer_append_byte(buffer, 
'}');
 
 7728        case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
 
 7729            pm_buffer_append_string(buffer, 
"{\"type\":\"RequiredKeywordParameterNode\",\"location\":", 50);
 
 7732            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7735            pm_buffer_append_byte(buffer, 
',');
 
 7736            pm_buffer_append_string(buffer, 
"\"ParameterFlags\":", 17);
 
 7738            pm_buffer_append_byte(buffer, 
'[');
 
 7739            if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
 
 7740                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7741                pm_buffer_append_string(buffer, 
"\"REPEATED_PARAMETER\"", 20);
 
 7744            pm_buffer_append_byte(buffer, 
']');
 
 7747            pm_buffer_append_byte(buffer, 
',');
 
 7748            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 7749            pm_dump_json_constant(buffer, parser, cast->
name);
 
 7752            pm_buffer_append_byte(buffer, 
',');
 
 7753            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 7754            pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 7756            pm_buffer_append_byte(buffer, 
'}');
 
 7759        case PM_REQUIRED_PARAMETER_NODE: {
 
 7760            pm_buffer_append_string(buffer, 
"{\"type\":\"RequiredParameterNode\",\"location\":", 43);
 
 7763            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7766            pm_buffer_append_byte(buffer, 
',');
 
 7767            pm_buffer_append_string(buffer, 
"\"ParameterFlags\":", 17);
 
 7769            pm_buffer_append_byte(buffer, 
'[');
 
 7770            if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
 
 7771                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7772                pm_buffer_append_string(buffer, 
"\"REPEATED_PARAMETER\"", 20);
 
 7775            pm_buffer_append_byte(buffer, 
']');
 
 7778            pm_buffer_append_byte(buffer, 
',');
 
 7779            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 7780            pm_dump_json_constant(buffer, parser, cast->
name);
 
 7782            pm_buffer_append_byte(buffer, 
'}');
 
 7785        case PM_RESCUE_MODIFIER_NODE: {
 
 7786            pm_buffer_append_string(buffer, 
"{\"type\":\"RescueModifierNode\",\"location\":", 40);
 
 7789            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7792            pm_buffer_append_byte(buffer, 
',');
 
 7793            pm_buffer_append_string(buffer, 
"\"expression\":", 13);
 
 7797            pm_buffer_append_byte(buffer, 
',');
 
 7798            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 7799            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 7802            pm_buffer_append_byte(buffer, 
',');
 
 7803            pm_buffer_append_string(buffer, 
"\"rescue_expression\":", 20);
 
 7806            pm_buffer_append_byte(buffer, 
'}');
 
 7809        case PM_RESCUE_NODE: {
 
 7810            pm_buffer_append_string(buffer, 
"{\"type\":\"RescueNode\",\"location\":", 32);
 
 7813            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7816            pm_buffer_append_byte(buffer, 
',');
 
 7817            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 7818            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 7821            pm_buffer_append_byte(buffer, 
',');
 
 7822            pm_buffer_append_string(buffer, 
"\"exceptions\":", 13);
 
 7824            pm_buffer_append_byte(buffer, 
'[');
 
 7826            for (
size_t index = 0; index < exceptions->
size; index++) {
 
 7827                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 7828                pm_dump_json(buffer, parser, exceptions->
nodes[index]);
 
 7830            pm_buffer_append_byte(buffer, 
']');
 
 7833            pm_buffer_append_byte(buffer, 
',');
 
 7834            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7836                pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7838                pm_buffer_append_string(buffer, 
"null", 4);
 
 7842            pm_buffer_append_byte(buffer, 
',');
 
 7843            pm_buffer_append_string(buffer, 
"\"reference\":", 12);
 
 7847                pm_buffer_append_string(buffer, 
"null", 4);
 
 7851            pm_buffer_append_byte(buffer, 
',');
 
 7852            pm_buffer_append_string(buffer, 
"\"then_keyword_loc\":", 19);
 
 7856                pm_buffer_append_string(buffer, 
"null", 4);
 
 7860            pm_buffer_append_byte(buffer, 
',');
 
 7861            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 7865                pm_buffer_append_string(buffer, 
"null", 4);
 
 7869            pm_buffer_append_byte(buffer, 
',');
 
 7870            pm_buffer_append_string(buffer, 
"\"subsequent\":", 13);
 
 7874                pm_buffer_append_string(buffer, 
"null", 4);
 
 7877            pm_buffer_append_byte(buffer, 
'}');
 
 7880        case PM_REST_PARAMETER_NODE: {
 
 7881            pm_buffer_append_string(buffer, 
"{\"type\":\"RestParameterNode\",\"location\":", 39);
 
 7884            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7887            pm_buffer_append_byte(buffer, 
',');
 
 7888            pm_buffer_append_string(buffer, 
"\"ParameterFlags\":", 17);
 
 7890            pm_buffer_append_byte(buffer, 
'[');
 
 7891            if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
 
 7892                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7893                pm_buffer_append_string(buffer, 
"\"REPEATED_PARAMETER\"", 20);
 
 7896            pm_buffer_append_byte(buffer, 
']');
 
 7899            pm_buffer_append_byte(buffer, 
',');
 
 7900            pm_buffer_append_string(buffer, 
"\"name\":", 7);
 
 7902                pm_dump_json_constant(buffer, parser, cast->
name);
 
 7904                pm_buffer_append_string(buffer, 
"null", 4);
 
 7908            pm_buffer_append_byte(buffer, 
',');
 
 7909            pm_buffer_append_string(buffer, 
"\"name_loc\":", 11);
 
 7911                pm_dump_json_location(buffer, parser, &cast->
name_loc);
 
 7913                pm_buffer_append_string(buffer, 
"null", 4);
 
 7917            pm_buffer_append_byte(buffer, 
',');
 
 7918            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 7919            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 7921            pm_buffer_append_byte(buffer, 
'}');
 
 7924        case PM_RETRY_NODE: {
 
 7925            pm_buffer_append_string(buffer, 
"{\"type\":\"RetryNode\",\"location\":", 31);
 
 7928            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7930            pm_buffer_append_byte(buffer, 
'}');
 
 7933        case PM_RETURN_NODE: {
 
 7934            pm_buffer_append_string(buffer, 
"{\"type\":\"ReturnNode\",\"location\":", 32);
 
 7937            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7940            pm_buffer_append_byte(buffer, 
',');
 
 7941            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 7942            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 7945            pm_buffer_append_byte(buffer, 
',');
 
 7946            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 7950                pm_buffer_append_string(buffer, 
"null", 4);
 
 7953            pm_buffer_append_byte(buffer, 
'}');
 
 7956        case PM_SELF_NODE: {
 
 7957            pm_buffer_append_string(buffer, 
"{\"type\":\"SelfNode\",\"location\":", 30);
 
 7960            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7962            pm_buffer_append_byte(buffer, 
'}');
 
 7965        case PM_SHAREABLE_CONSTANT_NODE: {
 
 7966            pm_buffer_append_string(buffer, 
"{\"type\":\"ShareableConstantNode\",\"location\":", 43);
 
 7969            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 7972            pm_buffer_append_byte(buffer, 
',');
 
 7973            pm_buffer_append_string(buffer, 
"\"ShareableConstantNodeFlags\":", 29);
 
 7975            pm_buffer_append_byte(buffer, 
'[');
 
 7976            if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL)) {
 
 7977                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7978                pm_buffer_append_string(buffer, 
"\"LITERAL\"", 9);
 
 7981            if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING)) {
 
 7982                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7983                pm_buffer_append_string(buffer, 
"\"EXPERIMENTAL_EVERYTHING\"", 25);
 
 7986            if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY)) {
 
 7987                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 7988                pm_buffer_append_string(buffer, 
"\"EXPERIMENTAL_COPY\"", 19);
 
 7991            pm_buffer_append_byte(buffer, 
']');
 
 7994            pm_buffer_append_byte(buffer, 
',');
 
 7995            pm_buffer_append_string(buffer, 
"\"write\":", 8);
 
 7998            pm_buffer_append_byte(buffer, 
'}');
 
 8001        case PM_SINGLETON_CLASS_NODE: {
 
 8002            pm_buffer_append_string(buffer, 
"{\"type\":\"SingletonClassNode\",\"location\":", 40);
 
 8005            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8008            pm_buffer_append_byte(buffer, 
',');
 
 8009            pm_buffer_append_string(buffer, 
"\"locals\":", 9);
 
 8011            pm_buffer_append_byte(buffer, 
'[');
 
 8013            for (
size_t index = 0; index < locals->
size; index++) {
 
 8014                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 8015                pm_dump_json_constant(buffer, parser, locals->
ids[index]);
 
 8017            pm_buffer_append_byte(buffer, 
']');
 
 8020            pm_buffer_append_byte(buffer, 
',');
 
 8021            pm_buffer_append_string(buffer, 
"\"class_keyword_loc\":", 20);
 
 8025            pm_buffer_append_byte(buffer, 
',');
 
 8026            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 8027            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 8030            pm_buffer_append_byte(buffer, 
',');
 
 8031            pm_buffer_append_string(buffer, 
"\"expression\":", 13);
 
 8035            pm_buffer_append_byte(buffer, 
',');
 
 8036            pm_buffer_append_string(buffer, 
"\"body\":", 7);
 
 8037            if (cast->
body != NULL) {
 
 8038                pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
 
 8040                pm_buffer_append_string(buffer, 
"null", 4);
 
 8044            pm_buffer_append_byte(buffer, 
',');
 
 8045            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 8048            pm_buffer_append_byte(buffer, 
'}');
 
 8051        case PM_SOURCE_ENCODING_NODE: {
 
 8052            pm_buffer_append_string(buffer, 
"{\"type\":\"SourceEncodingNode\",\"location\":", 40);
 
 8055            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8057            pm_buffer_append_byte(buffer, 
'}');
 
 8060        case PM_SOURCE_FILE_NODE: {
 
 8061            pm_buffer_append_string(buffer, 
"{\"type\":\"SourceFileNode\",\"location\":", 36);
 
 8064            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8067            pm_buffer_append_byte(buffer, 
',');
 
 8068            pm_buffer_append_string(buffer, 
"\"StringFlags\":", 14);
 
 8070            pm_buffer_append_byte(buffer, 
'[');
 
 8071            if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
 
 8072                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8073                pm_buffer_append_string(buffer, 
"\"FORCED_UTF8_ENCODING\"", 22);
 
 8076            if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_BINARY_ENCODING)) {
 
 8077                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8078                pm_buffer_append_string(buffer, 
"\"FORCED_BINARY_ENCODING\"", 24);
 
 8081            if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FROZEN)) {
 
 8082                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8083                pm_buffer_append_string(buffer, 
"\"FROZEN\"", 8);
 
 8086            if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_MUTABLE)) {
 
 8087                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8088                pm_buffer_append_string(buffer, 
"\"MUTABLE\"", 9);
 
 8091            pm_buffer_append_byte(buffer, 
']');
 
 8094            pm_buffer_append_byte(buffer, 
',');
 
 8095            pm_buffer_append_string(buffer, 
"\"filepath\":", 11);
 
 8097            pm_buffer_append_byte(buffer, 
'"');
 
 8099            pm_buffer_append_byte(buffer, 
'"');
 
 8101            pm_buffer_append_byte(buffer, 
'}');
 
 8104        case PM_SOURCE_LINE_NODE: {
 
 8105            pm_buffer_append_string(buffer, 
"{\"type\":\"SourceLineNode\",\"location\":", 36);
 
 8108            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8110            pm_buffer_append_byte(buffer, 
'}');
 
 8113        case PM_SPLAT_NODE: {
 
 8114            pm_buffer_append_string(buffer, 
"{\"type\":\"SplatNode\",\"location\":", 31);
 
 8117            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8120            pm_buffer_append_byte(buffer, 
',');
 
 8121            pm_buffer_append_string(buffer, 
"\"operator_loc\":", 15);
 
 8122            pm_dump_json_location(buffer, parser, &cast->
operator_loc);
 
 8125            pm_buffer_append_byte(buffer, 
',');
 
 8126            pm_buffer_append_string(buffer, 
"\"expression\":", 13);
 
 8130                pm_buffer_append_string(buffer, 
"null", 4);
 
 8133            pm_buffer_append_byte(buffer, 
'}');
 
 8136        case PM_STATEMENTS_NODE: {
 
 8137            pm_buffer_append_string(buffer, 
"{\"type\":\"StatementsNode\",\"location\":", 36);
 
 8140            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8143            pm_buffer_append_byte(buffer, 
',');
 
 8144            pm_buffer_append_string(buffer, 
"\"body\":", 7);
 
 8146            pm_buffer_append_byte(buffer, 
'[');
 
 8148            for (
size_t index = 0; index < body->
size; index++) {
 
 8149                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 8150                pm_dump_json(buffer, parser, body->
nodes[index]);
 
 8152            pm_buffer_append_byte(buffer, 
']');
 
 8154            pm_buffer_append_byte(buffer, 
'}');
 
 8157        case PM_STRING_NODE: {
 
 8158            pm_buffer_append_string(buffer, 
"{\"type\":\"StringNode\",\"location\":", 32);
 
 8161            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8164            pm_buffer_append_byte(buffer, 
',');
 
 8165            pm_buffer_append_string(buffer, 
"\"StringFlags\":", 14);
 
 8167            pm_buffer_append_byte(buffer, 
'[');
 
 8168            if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
 
 8169                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8170                pm_buffer_append_string(buffer, 
"\"FORCED_UTF8_ENCODING\"", 22);
 
 8173            if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_BINARY_ENCODING)) {
 
 8174                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8175                pm_buffer_append_string(buffer, 
"\"FORCED_BINARY_ENCODING\"", 24);
 
 8178            if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FROZEN)) {
 
 8179                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8180                pm_buffer_append_string(buffer, 
"\"FROZEN\"", 8);
 
 8183            if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_MUTABLE)) {
 
 8184                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8185                pm_buffer_append_string(buffer, 
"\"MUTABLE\"", 9);
 
 8188            pm_buffer_append_byte(buffer, 
']');
 
 8191            pm_buffer_append_byte(buffer, 
',');
 
 8192            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 8194                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 8196                pm_buffer_append_string(buffer, 
"null", 4);
 
 8200            pm_buffer_append_byte(buffer, 
',');
 
 8201            pm_buffer_append_string(buffer, 
"\"content_loc\":", 14);
 
 8202            pm_dump_json_location(buffer, parser, &cast->
content_loc);
 
 8205            pm_buffer_append_byte(buffer, 
',');
 
 8206            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 8208                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 8210                pm_buffer_append_string(buffer, 
"null", 4);
 
 8214            pm_buffer_append_byte(buffer, 
',');
 
 8215            pm_buffer_append_string(buffer, 
"\"unescaped\":", 12);
 
 8217            pm_buffer_append_byte(buffer, 
'"');
 
 8219            pm_buffer_append_byte(buffer, 
'"');
 
 8221            pm_buffer_append_byte(buffer, 
'}');
 
 8224        case PM_SUPER_NODE: {
 
 8225            pm_buffer_append_string(buffer, 
"{\"type\":\"SuperNode\",\"location\":", 31);
 
 8228            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8231            pm_buffer_append_byte(buffer, 
',');
 
 8232            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 8233            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 8236            pm_buffer_append_byte(buffer, 
',');
 
 8237            pm_buffer_append_string(buffer, 
"\"lparen_loc\":", 13);
 
 8239                pm_dump_json_location(buffer, parser, &cast->
lparen_loc);
 
 8241                pm_buffer_append_string(buffer, 
"null", 4);
 
 8245            pm_buffer_append_byte(buffer, 
',');
 
 8246            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 8250                pm_buffer_append_string(buffer, 
"null", 4);
 
 8254            pm_buffer_append_byte(buffer, 
',');
 
 8255            pm_buffer_append_string(buffer, 
"\"rparen_loc\":", 13);
 
 8257                pm_dump_json_location(buffer, parser, &cast->
rparen_loc);
 
 8259                pm_buffer_append_string(buffer, 
"null", 4);
 
 8263            pm_buffer_append_byte(buffer, 
',');
 
 8264            pm_buffer_append_string(buffer, 
"\"block\":", 8);
 
 8265            if (cast->
block != NULL) {
 
 8268                pm_buffer_append_string(buffer, 
"null", 4);
 
 8271            pm_buffer_append_byte(buffer, 
'}');
 
 8274        case PM_SYMBOL_NODE: {
 
 8275            pm_buffer_append_string(buffer, 
"{\"type\":\"SymbolNode\",\"location\":", 32);
 
 8278            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8281            pm_buffer_append_byte(buffer, 
',');
 
 8282            pm_buffer_append_string(buffer, 
"\"SymbolFlags\":", 14);
 
 8284            pm_buffer_append_byte(buffer, 
'[');
 
 8285            if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING)) {
 
 8286                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8287                pm_buffer_append_string(buffer, 
"\"FORCED_UTF8_ENCODING\"", 22);
 
 8290            if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING)) {
 
 8291                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8292                pm_buffer_append_string(buffer, 
"\"FORCED_BINARY_ENCODING\"", 24);
 
 8295            if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING)) {
 
 8296                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8297                pm_buffer_append_string(buffer, 
"\"FORCED_US_ASCII_ENCODING\"", 26);
 
 8300            pm_buffer_append_byte(buffer, 
']');
 
 8303            pm_buffer_append_byte(buffer, 
',');
 
 8304            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 8306                pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 8308                pm_buffer_append_string(buffer, 
"null", 4);
 
 8312            pm_buffer_append_byte(buffer, 
',');
 
 8313            pm_buffer_append_string(buffer, 
"\"value_loc\":", 12);
 
 8315                pm_dump_json_location(buffer, parser, &cast->
value_loc);
 
 8317                pm_buffer_append_string(buffer, 
"null", 4);
 
 8321            pm_buffer_append_byte(buffer, 
',');
 
 8322            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 8324                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 8326                pm_buffer_append_string(buffer, 
"null", 4);
 
 8330            pm_buffer_append_byte(buffer, 
',');
 
 8331            pm_buffer_append_string(buffer, 
"\"unescaped\":", 12);
 
 8333            pm_buffer_append_byte(buffer, 
'"');
 
 8335            pm_buffer_append_byte(buffer, 
'"');
 
 8337            pm_buffer_append_byte(buffer, 
'}');
 
 8340        case PM_TRUE_NODE: {
 
 8341            pm_buffer_append_string(buffer, 
"{\"type\":\"TrueNode\",\"location\":", 30);
 
 8344            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8346            pm_buffer_append_byte(buffer, 
'}');
 
 8349        case PM_UNDEF_NODE: {
 
 8350            pm_buffer_append_string(buffer, 
"{\"type\":\"UndefNode\",\"location\":", 31);
 
 8353            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8356            pm_buffer_append_byte(buffer, 
',');
 
 8357            pm_buffer_append_string(buffer, 
"\"names\":", 8);
 
 8359            pm_buffer_append_byte(buffer, 
'[');
 
 8361            for (
size_t index = 0; index < names->
size; index++) {
 
 8362                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 8363                pm_dump_json(buffer, parser, names->
nodes[index]);
 
 8365            pm_buffer_append_byte(buffer, 
']');
 
 8368            pm_buffer_append_byte(buffer, 
',');
 
 8369            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 8370            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 8372            pm_buffer_append_byte(buffer, 
'}');
 
 8375        case PM_UNLESS_NODE: {
 
 8376            pm_buffer_append_string(buffer, 
"{\"type\":\"UnlessNode\",\"location\":", 32);
 
 8379            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8382            pm_buffer_append_byte(buffer, 
',');
 
 8383            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 8384            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 8387            pm_buffer_append_byte(buffer, 
',');
 
 8388            pm_buffer_append_string(buffer, 
"\"predicate\":", 12);
 
 8392            pm_buffer_append_byte(buffer, 
',');
 
 8393            pm_buffer_append_string(buffer, 
"\"then_keyword_loc\":", 19);
 
 8397                pm_buffer_append_string(buffer, 
"null", 4);
 
 8401            pm_buffer_append_byte(buffer, 
',');
 
 8402            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 8406                pm_buffer_append_string(buffer, 
"null", 4);
 
 8410            pm_buffer_append_byte(buffer, 
',');
 
 8411            pm_buffer_append_string(buffer, 
"\"else_clause\":", 14);
 
 8415                pm_buffer_append_string(buffer, 
"null", 4);
 
 8419            pm_buffer_append_byte(buffer, 
',');
 
 8420            pm_buffer_append_string(buffer, 
"\"end_keyword_loc\":", 18);
 
 8424                pm_buffer_append_string(buffer, 
"null", 4);
 
 8427            pm_buffer_append_byte(buffer, 
'}');
 
 8430        case PM_UNTIL_NODE: {
 
 8431            pm_buffer_append_string(buffer, 
"{\"type\":\"UntilNode\",\"location\":", 31);
 
 8434            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8437            pm_buffer_append_byte(buffer, 
',');
 
 8438            pm_buffer_append_string(buffer, 
"\"LoopFlags\":", 12);
 
 8440            pm_buffer_append_byte(buffer, 
'[');
 
 8441            if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
 
 8442                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8443                pm_buffer_append_string(buffer, 
"\"BEGIN_MODIFIER\"", 16);
 
 8446            pm_buffer_append_byte(buffer, 
']');
 
 8449            pm_buffer_append_byte(buffer, 
',');
 
 8450            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 8451            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 8454            pm_buffer_append_byte(buffer, 
',');
 
 8455            pm_buffer_append_string(buffer, 
"\"do_keyword_loc\":", 17);
 
 8459                pm_buffer_append_string(buffer, 
"null", 4);
 
 8463            pm_buffer_append_byte(buffer, 
',');
 
 8464            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 8466                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 8468                pm_buffer_append_string(buffer, 
"null", 4);
 
 8472            pm_buffer_append_byte(buffer, 
',');
 
 8473            pm_buffer_append_string(buffer, 
"\"predicate\":", 12);
 
 8477            pm_buffer_append_byte(buffer, 
',');
 
 8478            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 8482                pm_buffer_append_string(buffer, 
"null", 4);
 
 8485            pm_buffer_append_byte(buffer, 
'}');
 
 8488        case PM_WHEN_NODE: {
 
 8489            pm_buffer_append_string(buffer, 
"{\"type\":\"WhenNode\",\"location\":", 30);
 
 8492            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8495            pm_buffer_append_byte(buffer, 
',');
 
 8496            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 8497            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 8500            pm_buffer_append_byte(buffer, 
',');
 
 8501            pm_buffer_append_string(buffer, 
"\"conditions\":", 13);
 
 8503            pm_buffer_append_byte(buffer, 
'[');
 
 8505            for (
size_t index = 0; index < conditions->
size; index++) {
 
 8506                if (index != 0) pm_buffer_append_byte(buffer, 
',');
 
 8507                pm_dump_json(buffer, parser, conditions->
nodes[index]);
 
 8509            pm_buffer_append_byte(buffer, 
']');
 
 8512            pm_buffer_append_byte(buffer, 
',');
 
 8513            pm_buffer_append_string(buffer, 
"\"then_keyword_loc\":", 19);
 
 8517                pm_buffer_append_string(buffer, 
"null", 4);
 
 8521            pm_buffer_append_byte(buffer, 
',');
 
 8522            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 8526                pm_buffer_append_string(buffer, 
"null", 4);
 
 8529            pm_buffer_append_byte(buffer, 
'}');
 
 8532        case PM_WHILE_NODE: {
 
 8533            pm_buffer_append_string(buffer, 
"{\"type\":\"WhileNode\",\"location\":", 31);
 
 8536            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8539            pm_buffer_append_byte(buffer, 
',');
 
 8540            pm_buffer_append_string(buffer, 
"\"LoopFlags\":", 12);
 
 8542            pm_buffer_append_byte(buffer, 
'[');
 
 8543            if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
 
 8544                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8545                pm_buffer_append_string(buffer, 
"\"BEGIN_MODIFIER\"", 16);
 
 8548            pm_buffer_append_byte(buffer, 
']');
 
 8551            pm_buffer_append_byte(buffer, 
',');
 
 8552            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 8553            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 8556            pm_buffer_append_byte(buffer, 
',');
 
 8557            pm_buffer_append_string(buffer, 
"\"do_keyword_loc\":", 17);
 
 8561                pm_buffer_append_string(buffer, 
"null", 4);
 
 8565            pm_buffer_append_byte(buffer, 
',');
 
 8566            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 8568                pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 8570                pm_buffer_append_string(buffer, 
"null", 4);
 
 8574            pm_buffer_append_byte(buffer, 
',');
 
 8575            pm_buffer_append_string(buffer, 
"\"predicate\":", 12);
 
 8579            pm_buffer_append_byte(buffer, 
',');
 
 8580            pm_buffer_append_string(buffer, 
"\"statements\":", 13);
 
 8584                pm_buffer_append_string(buffer, 
"null", 4);
 
 8587            pm_buffer_append_byte(buffer, 
'}');
 
 8590        case PM_X_STRING_NODE: {
 
 8591            pm_buffer_append_string(buffer, 
"{\"type\":\"XStringNode\",\"location\":", 33);
 
 8594            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8597            pm_buffer_append_byte(buffer, 
',');
 
 8598            pm_buffer_append_string(buffer, 
"\"EncodingFlags\":", 16);
 
 8600            pm_buffer_append_byte(buffer, 
'[');
 
 8601            if (PM_NODE_FLAG_P(cast, PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING)) {
 
 8602                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8603                pm_buffer_append_string(buffer, 
"\"FORCED_UTF8_ENCODING\"", 22);
 
 8606            if (PM_NODE_FLAG_P(cast, PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING)) {
 
 8607                if (flags != 0) pm_buffer_append_byte(buffer, 
',');
 
 8608                pm_buffer_append_string(buffer, 
"\"FORCED_BINARY_ENCODING\"", 24);
 
 8611            pm_buffer_append_byte(buffer, 
']');
 
 8614            pm_buffer_append_byte(buffer, 
',');
 
 8615            pm_buffer_append_string(buffer, 
"\"opening_loc\":", 14);
 
 8616            pm_dump_json_location(buffer, parser, &cast->
opening_loc);
 
 8619            pm_buffer_append_byte(buffer, 
',');
 
 8620            pm_buffer_append_string(buffer, 
"\"content_loc\":", 14);
 
 8621            pm_dump_json_location(buffer, parser, &cast->
content_loc);
 
 8624            pm_buffer_append_byte(buffer, 
',');
 
 8625            pm_buffer_append_string(buffer, 
"\"closing_loc\":", 14);
 
 8626            pm_dump_json_location(buffer, parser, &cast->
closing_loc);
 
 8629            pm_buffer_append_byte(buffer, 
',');
 
 8630            pm_buffer_append_string(buffer, 
"\"unescaped\":", 12);
 
 8632            pm_buffer_append_byte(buffer, 
'"');
 
 8634            pm_buffer_append_byte(buffer, 
'"');
 
 8636            pm_buffer_append_byte(buffer, 
'}');
 
 8639        case PM_YIELD_NODE: {
 
 8640            pm_buffer_append_string(buffer, 
"{\"type\":\"YieldNode\",\"location\":", 31);
 
 8643            pm_dump_json_location(buffer, parser, &cast->
base.
location);
 
 8646            pm_buffer_append_byte(buffer, 
',');
 
 8647            pm_buffer_append_string(buffer, 
"\"keyword_loc\":", 14);
 
 8648            pm_dump_json_location(buffer, parser, &cast->
keyword_loc);
 
 8651            pm_buffer_append_byte(buffer, 
',');
 
 8652            pm_buffer_append_string(buffer, 
"\"lparen_loc\":", 13);
 
 8654                pm_dump_json_location(buffer, parser, &cast->
lparen_loc);
 
 8656                pm_buffer_append_string(buffer, 
"null", 4);
 
 8660            pm_buffer_append_byte(buffer, 
',');
 
 8661            pm_buffer_append_string(buffer, 
"\"arguments\":", 12);
 
 8665                pm_buffer_append_string(buffer, 
"null", 4);
 
 8669            pm_buffer_append_byte(buffer, 
',');
 
 8670            pm_buffer_append_string(buffer, 
"\"rparen_loc\":", 13);
 
 8672                pm_dump_json_location(buffer, parser, &cast->
rparen_loc);
 
 8674                pm_buffer_append_string(buffer, 
"null", 4);
 
 8677            pm_buffer_append_byte(buffer, 
'}');