================================================================================
integer literals
================================================================================

const int dec = 1_2;
const long hex = 0xf_1l;
const long hex2 = 0Xffff;
const long hex3 = 0x_0_f;
const UInt64 dec = 1uL;
const UInt16 bin = 0b0100_100;
const UInt16 bin2 = 0B01010__10;
const long bin3 = 0b_0_10;
--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (integer_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (integer_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (integer_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (integer_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (identifier)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (integer_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (identifier)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (integer_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (identifier)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (integer_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (integer_literal)))))))

================================================================================
boolean literals
================================================================================

const bool t = true, u = false;

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (boolean_literal)))
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (boolean_literal)))))))

================================================================================
char literals
================================================================================

const char c = 'a';
const char esc = '\n';
const char hex = '\xf09a';
const char uni16 = '\ua0bf';
const char uni32 = '\UA0BFf9ca';

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (character_literal
              (character_literal_unescaped)))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (character_literal
              (escape_sequence)))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (character_literal
              (escape_sequence)))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (character_literal
              (escape_sequence)))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (character_literal
              (escape_sequence))))))))

================================================================================
real literals
================================================================================

const float s = 012.23F;
const float e = 1e6f;
const Single en = 0e-1f;
const Single ep = 1_1e+12f;
const double d = 0.9_9d;
const double e = .4_9d;
const decimal m = 0_1_2.9m;
const Decimal m2 = 102.349M;

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (real_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (real_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (identifier)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (real_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (identifier)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (real_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (real_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (real_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (real_literal))))))
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (identifier)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (real_literal)))))))

================================================================================
null literals
================================================================================

const string x = null;

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (modifier)
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (null_literal)))))))

================================================================================
string literals
================================================================================

class A {
  String e = "";
  string s = "a";
  string m = "abc";
  string esc = "ab\"\t";
  string hex = "ab\x22r";
  string hex2 = "\x22r\x00";
  string u16 = "\ub0d0ok";
  string u32 = "\uF1D20ff0test";
  string ve = @"";
  string v = @"abcde\ef";
  string quotes = @"<TestClass xmlns=""http://example.com/omg"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""></TestClass>";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (identifier)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal)))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal
                (string_literal_fragment))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal
                (string_literal_fragment))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal
                (string_literal_fragment)
                (escape_sequence)
                (escape_sequence))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal
                (string_literal_fragment)
                (escape_sequence)
                (string_literal_fragment))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal
                (escape_sequence)
                (string_literal_fragment)
                (escape_sequence))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal
                (escape_sequence)
                (string_literal_fragment))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal
                (escape_sequence)
                (string_literal_fragment))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (verbatim_string_literal)))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (verbatim_string_literal)))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (verbatim_string_literal))))))))

================================================================================
string literals
================================================================================

var e = @"This
is
a
multi-line";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (verbatim_string_literal)))))))

================================================================================
string literals containing the line comment token
================================================================================

class A {
  string s = "//\n//";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (string_literal
                (string_literal_fragment)
                (escape_sequence)
                (string_literal_fragment)))))))))

================================================================================
utf-8 string literals
================================================================================

var a = "lower"u8;
var b = "upper"U8;
var c = @"lower"u8;
var d = @"upper"U8;
--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (string_literal
              (string_literal_fragment)
              (string_literal_encoding)))))))
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (string_literal
              (string_literal_fragment)
              (string_literal_encoding)))))))
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (verbatim_string_literal))))))
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (verbatim_string_literal)))))))

================================================================================
string literals containing newline
================================================================================

class A {
  string s = $"This contains {
    abc
  }";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_string_text)
                (interpolation
                  (identifier))))))))))

================================================================================
string literals containing block comment
================================================================================

string s = "\u0065/* \u0065 */\u0065";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (string_literal
              (escape_sequence)
              (string_literal_fragment)
              (escape_sequence)
              (string_literal_fragment)
              (escape_sequence))))))))

================================================================================
verbatim string literals containing block comment
================================================================================

string s = @"/* comment */";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (verbatim_string_literal)))))))

================================================================================
interpolated string literals
================================================================================

class A {
  string s = $"hello";
  string esc = $"ab\"\t";
  string double = $"{{nope}}";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_string_text))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_string_text)
                (interpolated_string_text
                  (escape_sequence))
                (interpolated_string_text
                  (escape_sequence)))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_string_text)
                (interpolated_string_text)))))))))

================================================================================
interpolated string literals with expressions
================================================================================

class A {
  string s = $"hello {name}, how are you?";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_string_text)
                (interpolation
                  (identifier))
                (interpolated_string_text)))))))))

================================================================================
interpolated string literals with formatted expressions
================================================================================

class A {
  string s = $"hello {name:0.00}, how are you?";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_string_text)
                (interpolation
                  (identifier)
                  (interpolation_format_clause))
                (interpolated_string_text)))))))))

================================================================================
interpolated string literals with alignment expressions
================================================================================

class A {
  string s = $"hello {name,25}, how are you?";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_string_text)
                (interpolation
                  (identifier)
                  (interpolation_alignment_clause
                    (integer_literal)))
                (interpolated_string_text)))))))))

================================================================================
interpolated string literals containing block comment
================================================================================

string s = $"\u0065/* \u0065 */\u0065";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolated_string_text
                (escape_sequence))
              (interpolated_string_text)
              (interpolated_string_text
                (escape_sequence))
              (interpolated_string_text)
              (interpolated_string_text
                (escape_sequence)))))))))

================================================================================
interpolated verbatim string literals
================================================================================

class A {
  string s = $@"hello";
  string s = @$"hello";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_verbatim_string_text))))))
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_verbatim_string_text)))))))))

================================================================================
interpolated verbatim string literals with expressions
================================================================================

class A {
  string s = $@"hello {name}, how are you?";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_verbatim_string_text)
                (interpolation
                  (identifier))
                (interpolated_verbatim_string_text)))))))))

================================================================================
interpolated verbatim string literals with formatted expressions
================================================================================

class A {
  string s = $@"hello {name:g}, how are you?";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_verbatim_string_text)
                (interpolation
                  (identifier)
                  (interpolation_format_clause))
                (interpolated_verbatim_string_text)))))))))

================================================================================
interpolated verbatim string literals with alignment expressions
================================================================================

class A {
  string s = $@"hello {name,-10}, how are you?";
}

--------------------------------------------------------------------------------

(compilation_unit
  (class_declaration
    name: (identifier)
    body: (declaration_list
      (field_declaration
        (variable_declaration
          type: (predefined_type)
          (variable_declarator
            name: (identifier)
            (equals_value_clause
              (interpolated_string_expression
                (interpolated_verbatim_string_text)
                (interpolation
                  (identifier)
                  (interpolation_alignment_clause
                    (prefix_unary_expression
                      (integer_literal))))
                (interpolated_verbatim_string_text)))))))))

================================================================================
interpolated verbatim string literals bracket escapes (WRONG!)
================================================================================

var s = $@"Another
multiple
line";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolated_verbatim_string_text))))))))

================================================================================
interpolated verbatim string literals bracket escapes
================================================================================

string s = $@"
class A
{{
    bool Method(int value)
    {{
        return value  is  {operatorText}  3  or  {operatorText}  5;
    }}
}}
";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolated_verbatim_string_text)
              (interpolated_verbatim_string_text)
              (interpolated_verbatim_string_text)
              (interpolated_verbatim_string_text)
              (interpolated_verbatim_string_text)
              (interpolation
                (identifier))
              (interpolated_verbatim_string_text)
              (interpolation
                (identifier))
              (interpolated_verbatim_string_text))))))))

================================================================================
interpolated verbatim string containing block comment
================================================================================

string s = $@"{a}/* comment */{a}";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (predefined_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolation
                (identifier))
              (interpolated_verbatim_string_text)
              (interpolation
                (identifier)))))))))

================================================================================
interpolated verbatim string comment with interpolation
================================================================================

var x = $@"/* {world} */";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolated_verbatim_string_text)
              (interpolation
                (identifier))
              (interpolated_verbatim_string_text))))))))

================================================================================
Raw string literal (basic)
================================================================================

var x = """Hello""";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (raw_string_literal)))))))

================================================================================
Raw string literal (multi-line)
================================================================================

var x = """
  Hello
  """;

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (raw_string_literal)))))))

================================================================================
Raw string literal (embedded one double quotes)
================================================================================

var x = """
  Hello "Damien"
  """;

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (raw_string_literal)))))))

================================================================================
Raw string literal (embedded two double quotes)
================================================================================

var x = """
  Hello ""Damien""
  """;

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (raw_string_literal)))))))

================================================================================
Raw string literal (UTF-8)
================================================================================

var x = """
  Hello "Damien"
  """u8;

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (raw_string_literal)))))))

================================================================================
Interpolated raw string literal (basic)
================================================================================

var x = $"""The point {X}, {Y} is {Math.Sqrt(X * X + Y * Y)} from the origin""";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolated_raw_string_text)
              (interpolation
                (identifier))
              (interpolated_raw_string_text)
              (interpolation
                (identifier))
              (interpolated_raw_string_text)
              (interpolation
                (invocation_expression
                  function: (member_access_expression
                    expression: (identifier)
                    name: (identifier))
                  arguments: (argument_list
                    (argument
                      (binary_expression
                        left: (binary_expression
                          left: (identifier)
                          right: (identifier))
                        right: (binary_expression
                          left: (identifier)
                          right: (identifier)))))))
              (interpolated_raw_string_text))))))))

================================================================================
Interpolated raw string literal (one double quotes)
================================================================================

var x = $"""The point "{X}, {Y}" is {Math.Sqrt(X * X + Y * Y)} from the origin""";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolated_raw_string_text)
              (interpolated_raw_string_text)
              (interpolation
                (identifier))
              (interpolated_raw_string_text)
              (interpolation
                (identifier))
              (interpolated_raw_string_text)
              (interpolated_raw_string_text)
              (interpolation
                (invocation_expression
                  function: (member_access_expression
                    expression: (identifier)
                    name: (identifier))
                  arguments: (argument_list
                    (argument
                      (binary_expression
                        left: (binary_expression
                          left: (identifier)
                          right: (identifier))
                        right: (binary_expression
                          left: (identifier)
                          right: (identifier)))))))
              (interpolated_raw_string_text))))))))

================================================================================
Interpolated raw string literal (two double quotes)
================================================================================

var x = $"""The point ""{X}, {Y}"" is {Math.Sqrt(X * X + Y * Y)} from the origin""";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolated_raw_string_text)
              (interpolated_raw_string_text)
              (interpolation
                (identifier))
              (interpolated_raw_string_text)
              (interpolation
                (identifier))
              (interpolated_raw_string_text)
              (interpolated_raw_string_text)
              (interpolation
                (invocation_expression
                  function: (member_access_expression
                    expression: (identifier)
                    name: (identifier))
                  arguments: (argument_list
                    (argument
                      (binary_expression
                        left: (binary_expression
                          left: (identifier)
                          right: (identifier))
                        right: (binary_expression
                          left: (identifier)
                          right: (identifier)))))))
              (interpolated_raw_string_text))))))))

================================================================================
Interpolated raw string literal (multi-line)
================================================================================

var x = $"""The point
  ""{X}, {Y}""
  is {Math.Sqrt(X * X + Y * Y)}
  from the origin""";

--------------------------------------------------------------------------------

(compilation_unit
  (global_statement
    (local_declaration_statement
      (variable_declaration
        type: (implicit_type)
        (variable_declarator
          name: (identifier)
          (equals_value_clause
            (interpolated_string_expression
              (interpolated_raw_string_text)
              (interpolated_raw_string_text)
              (interpolation
                (identifier))
              (interpolated_raw_string_text)
              (interpolation
                (identifier))
              (interpolated_raw_string_text)
              (interpolated_raw_string_text)
              (interpolation
                (invocation_expression
                  function: (member_access_expression
                    expression: (identifier)
                    name: (identifier))
                  arguments: (argument_list
                    (argument
                      (binary_expression
                        left: (binary_expression
                          left: (identifier)
                          right: (identifier))
                        right: (binary_expression
                          left: (identifier)
                          right: (identifier)))))))
              (interpolated_raw_string_text))))))))

================================================================================
multiple raw string literals should not be combined
================================================================================

using System;

public class RawStringLiterals {
  public static void Main(string[] args) {
    string tb1, tb2, tb3;
    tb1 = """text block 1""";
    tb2 = """
    text block 2
    """;
    tb3 = """"
    text block 3
    """";
  }
}

--------------------------------------------------------------------------------

(compilation_unit
  (using_directive
    name: (identifier))
  (class_declaration
    (modifier)
    name: (identifier)
    body: (declaration_list
      (method_declaration
        (modifier)
        (modifier)
        type: (predefined_type)
        name: (identifier)
        parameters: (parameter_list
          (parameter
            type: (array_type
              type: (predefined_type)
              rank: (array_rank_specifier))
            name: (identifier)))
        body: (block
          (local_declaration_statement
            (variable_declaration
              type: (predefined_type)
              (variable_declarator
                name: (identifier))
              (variable_declarator
                name: (identifier))
              (variable_declarator
                name: (identifier))))
          (expression_statement
            (assignment_expression
              left: (identifier)
              (assignment_operator)
              right: (raw_string_literal)))
          (expression_statement
            (assignment_expression
              left: (identifier)
              (assignment_operator)
              right: (raw_string_literal)))
          (expression_statement
            (assignment_expression
              left: (identifier)
              (assignment_operator)
              right: (raw_string_literal))))))))
