=======================================
Class event declarations
=======================================

class A {
  public event EventHandler<T> SomeEvent { add { } remove { } }
}

---

(compilation_unit
  (class_declaration
    (identifier)
    (declaration_list
      (event_declaration
        (modifier)
        (generic_name (identifier)
          (type_argument_list (identifier)))
        (identifier)
        (accessor_list
          (accessor_declaration (block))
          (accessor_declaration (block)))))))

=======================================
Struct event declarations
=======================================

struct A {
  public event EventHandler<T> SomeEvent { add { } remove { } }
}

---

(compilation_unit
  (struct_declaration
    (identifier)
    (declaration_list
      (event_declaration
        (modifier)
        (generic_name (identifier)
          (type_argument_list (identifier)))
        (identifier)
        (accessor_list
          (accessor_declaration (block))
          (accessor_declaration (block)))))))

=======================================
Class event declarations with expression bodies
=======================================

class A {
  public event EventHandler SomeEvent { add => addSomething(); remove => removeSomething(); }
}

---

(compilation_unit
  (class_declaration
    (identifier)
    (declaration_list
      (event_declaration
        (modifier)
        (identifier)
        (identifier)
        (accessor_list
          (accessor_declaration (arrow_expression_clause (invocation_expression (identifier) (argument_list))))
          (accessor_declaration (arrow_expression_clause (invocation_expression (identifier) (argument_list)))))))))
