1.4 Rule Inlining non_array_type

We repeat the known procedure, where non_array_type won't have its left-recursion removal until the last step. We then get

non_array_type
    :   (type_name
        |    simple_type
        |    enum_type
        |    class_type
        |    interface_type
        |    non_array_type rank_specifier+
        |    delegate_type
        |    type_parameter
        |    pointer_type
        ) INTERR*
    ;
    
pointer_type
    :    type_name INTERR* STAR
    |    simple_type INTERR* STAR
    |    enum_type INTERR* STAR
    |    class_type INTERR* STAR
    |    interface_type INTERR* STAR
    |    non_array_type rank_specifier+ INTERR* STAR
    |    delegate_type INTERR* STAR
    |    type_parameter INTERR* STAR
    |    pointer_type INTERR* STAR
    |    VOID STAR
    ;

pointer_type is turned into

pointer_type
    :   (type_name INTERR* STAR
        |    simple_type INTERR* STAR
        |    enum_type INTERR* STAR
        |    class_type INTERR* STAR
        |    interface_type INTERR* STAR
        |    non_array_type rank_specifier+ INTERR* STAR
        |    delegate_type INTERR* STAR
        |    type_parameter INTERR* STAR
        |    VOID STAR
        ) (INTERR | STAR)*
    ;

Inlining pointer_type leads with some simplification to

non_array_type
    :   (type_name
        |    simple_type
        |    enum_type
        |    class_type
        |    interface_type
        |    non_array_type rank_specifier+
        |    delegate_type
        |    type_parameter
        |    type_name INTERR* STAR (INTERR | STAR)*
        |    simple_type INTERR* STAR (INTERR | STAR)*
        |    enum_type INTERR* STAR (INTERR | STAR)*
        |    class_type INTERR* STAR (INTERR | STAR)*
        |    interface_type INTERR* STAR (INTERR | STAR)*
        |    non_array_type rank_specifier+ INTERR* STAR (INTERR | STAR)*
        |    delegate_type INTERR* STAR (INTERR | STAR)*
        |    type_parameter INTERR* STAR (INTERR | STAR)*
        |    VOID STAR (INTERR | STAR)*
        ) INTERR*
    ;

Following the next few steps as done when inlining array_type results in:

non_array_type
    :   (type_name
        |    simple_type
        |    enum_type
        |    class_type
        |    interface_type
        |    delegate_type
        |    type_parameter
        |    VOID STAR
        ) (rank_specifier | INTERR | STAR)*
    ;

Sections

My siblings (including me):