================================================================================
Simple Structure
================================================================================

struct Foo {
	x <int>
	y <float>
}

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

(root
  (statement
    (statement_kind
      (type_definition
        (struct_definition
          (identifier)
          (identifier)
          (type_specification
            (type))
          (identifier)
          (type_specification
            (type)))))))

================================================================================
Nested Structure
================================================================================

struct Foo {
	x <int>
	y <float> = 0.0

    bar <Bar> = Bar::{
      baz = 42
    }
}

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

(root
  (statement
    (statement_kind
      (type_definition
        (struct_definition
          (identifier)
          (identifier)
          (type_specification
            (type))
          (identifier)
          (type_specification
            (type))
          (statement
            (statement_kind
              (expression
                (value
                  (float)))))
          (identifier)
          (type_specification
            (type
              (identifier)))
          (statement
            (statement_kind
              (expression
                (value
                  (struct_instance
                    (identifier)
                    (map
                      (identifier)
                      (statement
                        (statement_kind
                          (expression
                            (value
                              (integer))))))))))))))))
