Interface AST node.
EBNF grammar:
interface-declaration:
(attributes)? (interface-modifiers)? ("partial")? "interface" identifier
(type-parameter-list)? (type-base)? (type-parameter-constraints-clauses)? interface-body (";")?
interface-modifiers:
(interface-modifier)+
interface-modifier:
"new"
"public"
"protected"
"internal"
"private"
interface-body:
"{" (interface-member-declarations)? "}"
interface-member-declarations:
(interface-member-declaration)+
interface-member-declaration:
interface-method-declaration
interface-property-declaration
interface-event-declaration
interface-indexer-declaration
interface-method-declaration:
(attributes)? ("new")? return-type identifier "(" formal-parameter-listopt ")" ";"
interface-property-declaration:
(attributes)? ("new")? type identifier "{" interface-accessors "}"
interface-event-declaration:
(attributes)? ("new")? "event" type identifier ";"
interface-indexer-declaration:
(attributes)? ("new")? type "this" "[" formal-parameter-list "]" "{" interface-accessors "}"
interface-accessors:
(attributes)? "get" ";"
(attributes)? "set" ";"
(attributes)? "get" ";" (attributes)? "set" ";"
(attributes)? "set" ";" (attributes)? "get" ";"