===================================== Struct with a type parameter struct constraint ===================================== public struct F where T:struct {} --- (compilation_unit (struct_declaration (modifier) (identifier) (type_parameter_list (type_parameter (identifier))) (type_parameter_constraints_clause (identifier) (type_parameter_constraint)) (declaration_list))) ===================================== Struct with a type parameter class constraint ===================================== public struct F where T:class {} --- (compilation_unit (struct_declaration (modifier) (identifier) (type_parameter_list (type_parameter (identifier))) (type_parameter_constraints_clause (identifier) (type_parameter_constraint)) (declaration_list))) ===================================== Struct with type parameter new constraint ===================================== public struct F where T: new() {} --- (compilation_unit (struct_declaration (modifier) (identifier) (type_parameter_list (type_parameter (identifier))) (type_parameter_constraints_clause (identifier) (type_parameter_constraint (constructor_constraint))) (declaration_list))) ===================================== Struct with interface ===================================== public struct A : ISomething { } --- (compilation_unit (struct_declaration (modifier) (identifier) (base_list (identifier)) (declaration_list))) ===================================== Struct with multiple type parameter constraints ===================================== private struct F where T1 : I1, I2, new() where T2 : I2 { } --- (compilation_unit (struct_declaration (modifier) (identifier) (type_parameter_list (type_parameter (identifier)) (type_parameter (identifier))) (type_parameter_constraints_clause (identifier) (type_parameter_constraint (type_constraint (identifier))) (type_parameter_constraint (type_constraint (identifier))) (type_parameter_constraint (constructor_constraint))) (type_parameter_constraints_clause (identifier) (type_parameter_constraint (type_constraint (identifier)))) (declaration_list))) ===================================== Struct with readonly modifier ===================================== readonly struct Test { } --- (compilation_unit (struct_declaration (modifier) (identifier) (declaration_list))) ===================================== Struct with ref modifier ===================================== ref struct Test { } --- (compilation_unit (struct_declaration (modifier) (identifier) (declaration_list)))