================================================================================
Type aliases
================================================================================

type Headers =
  List(#(String, String))
type Box(a) = #(a)
type NamedBox(a) = #(String, a)

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

(source_file
  (type_alias
    (type_name
      name: (type_identifier))
    (type
      name: (type_identifier)
      arguments: (type_arguments
        (type_argument
          (tuple_type
            (type
              name: (type_identifier))
            (type
              name: (type_identifier)))))))
  (type_alias
    (type_name
      name: (type_identifier)
      parameters: (type_parameters
        (type_parameter)))
    (tuple_type
      (type_var)))
  (type_alias
    (type_name
      name: (type_identifier)
      parameters: (type_parameters
        (type_parameter)))
    (tuple_type
      (type
        name: (type_identifier))
      (type_var))))

================================================================================
Public type aliases
================================================================================

pub type Headers =
  List(#(String, String))
pub type Box(a) = #(a)
pub type NamedBox(a) = #(String, a)

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

(source_file
  (type_alias
    (visibility_modifier)
    (type_name
      name: (type_identifier))
    (type
      name: (type_identifier)
      arguments: (type_arguments
        (type_argument
          (tuple_type
            (type
              name: (type_identifier))
            (type
              name: (type_identifier)))))))
  (type_alias
    (visibility_modifier)
    (type_name
      name: (type_identifier)
      parameters: (type_parameters
        (type_parameter)))
    (tuple_type
      (type_var)))
  (type_alias
    (visibility_modifier)
    (type_name
      name: (type_identifier)
      parameters: (type_parameters
        (type_parameter)))
    (tuple_type
      (type
        name: (type_identifier))
      (type_var))))

================================================================================
Public opaque type aliases
================================================================================

pub opaque type Headers =
  List(#(String, String))
pub opaque type Box(a) = #(a)
pub opaque type NamedBox(a) = #(String, a)

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

(source_file
  (type_alias
    (visibility_modifier)
    (opacity_modifier)
    (type_name
      name: (type_identifier))
    (type
      name: (type_identifier)
      arguments: (type_arguments
        (type_argument
          (tuple_type
            (type
              name: (type_identifier))
            (type
              name: (type_identifier)))))))
  (type_alias
    (visibility_modifier)
    (opacity_modifier)
    (type_name
      name: (type_identifier)
      parameters: (type_parameters
        (type_parameter)))
    (tuple_type
      (type_var)))
  (type_alias
    (visibility_modifier)
    (opacity_modifier)
    (type_name
      name: (type_identifier)
      parameters: (type_parameters
        (type_parameter)))
    (tuple_type
      (type
        name: (type_identifier))
      (type_var))))
