===
Simple type expression #1
===

[string]

---

(program
  (statement_list
    (pipeline
      (logical_expression
        (bitwise_expression
          (comparison_expression
            (additive_expression
              (multiplicative_expression
                (format_expression
                  (range_expression
                    (array_literal_expression
                      (unary_expression
                        (type_literal
                          (type_spec
                            (type_name
                              (type_identifier))))))))))))))))

===
Simple type expression #2
===

[System.Collections.ArrayList]

---

(program
  (statement_list
    (pipeline
      (logical_expression
        (bitwise_expression
          (comparison_expression
            (additive_expression
              (multiplicative_expression
                (format_expression
                  (range_expression
                    (array_literal_expression
                      (unary_expression
                        (type_literal
                          (type_spec
                            (type_name
                              (type_name
                                (type_name
                                  (type_identifier))
                                (type_identifier))
                              (type_identifier))))))))))))))))

===
Array type expression #1
===

[int[]]

---

(program
  (statement_list
    (pipeline
      (logical_expression
        (bitwise_expression
          (comparison_expression
            (additive_expression
              (multiplicative_expression
                (format_expression
                  (range_expression
                    (array_literal_expression
                      (unary_expression
                        (type_literal
                          (type_spec
                            (array_type_name
                              (type_name
                                (type_identifier)))))))))))))))))

===
Array type expression #1
===

[System.DateTime[]]

---

(program
  (statement_list
    (pipeline
      (logical_expression
        (bitwise_expression
          (comparison_expression
            (additive_expression
              (multiplicative_expression
                (format_expression
                  (range_expression
                    (array_literal_expression
                      (unary_expression
                        (type_literal
                          (type_spec
                            (array_type_name
                              (type_name
                                (type_name
                                  (type_identifier))
                                (type_identifier)))))))))))))))))
===
Generic type expression #1
===

[MyType[psobject]]

---

(program
  (statement_list
    (pipeline
      (logical_expression
        (bitwise_expression
          (comparison_expression
            (additive_expression
              (multiplicative_expression
                (format_expression
                  (range_expression
                    (array_literal_expression
                      (unary_expression
                        (type_literal
                          (type_spec
                            (generic_type_name
                              (type_name
                                (type_identifier)))
                            (generic_type_arguments
                              (type_spec
                                (type_name
                                  (type_identifier))))))))))))))))))

===
Generic type expression #2
===

[System.Collections.Generic.Dictionary[string, System.IO.FileInfo]]

---

(program
  (statement_list
    (pipeline
      (logical_expression
        (bitwise_expression
          (comparison_expression
            (additive_expression
              (multiplicative_expression
                (format_expression
                  (range_expression
                    (array_literal_expression
                      (unary_expression
                        (type_literal
                          (type_spec
                            (generic_type_name
                              (type_name
                                (type_name
                                  (type_name
                                    (type_name
                                      (type_identifier))
                                    (type_identifier))
                                  (type_identifier))
                                (type_identifier)))
                            (generic_type_arguments
                              (type_spec
                                (type_name
                                  (type_identifier)))
                              (type_spec
                                (type_name
                                  (type_name
                                    (type_name
                                      (type_identifier))
                                    (type_identifier))
                                  (type_identifier))))))))))))))))))

===
Complex type expression
===

[System.Collections.Generic.Dictionary[int[], System.Collections.Generic.List[string[]]]]

---

(program
  (statement_list
    (pipeline
      (logical_expression
        (bitwise_expression
          (comparison_expression
            (additive_expression
              (multiplicative_expression
                (format_expression
                  (range_expression
                    (array_literal_expression
                      (unary_expression
                        (type_literal
                          (type_spec
                            (generic_type_name
                              (type_name
                                (type_name
                                  (type_name
                                    (type_name
                                      (type_identifier))
                                    (type_identifier))
                                  (type_identifier))
                                (type_identifier)))
                            (generic_type_arguments
                              (type_spec
                                (array_type_name
                                  (type_name
                                    (type_identifier))))
                              (type_spec
                                (generic_type_name
                                  (type_name
                                    (type_name
                                      (type_name
                                        (type_name
                                          (type_identifier))
                                        (type_identifier))
                                      (type_identifier))
                                    (type_identifier)))
                                (generic_type_arguments
                                  (type_spec
                                    (array_type_name
                                      (type_name
                                        (type_identifier)))))))))))))))))))))

===
Type-attributed variable
===

[string]$str

---

(program
  (statement_list
    (pipeline
      (logical_expression
        (bitwise_expression
          (comparison_expression
            (additive_expression
              (multiplicative_expression
                (format_expression
                  (range_expression
                    (array_literal_expression
                      (unary_expression
                        (expression_with_unary_operator
                          (cast_expression
                            (type_literal
                              (type_spec
                                (type_name
                                  (type_identifier))))
                            (unary_expression
                              (variable))))))))))))))))
