Statement {
    Enum(enum_: Enum)
    Node(node: Node)
}

Enum(name: Name, nodes: Node[])

Node(name: Name, params: Param[])

Param(name: Name, type_: Type)

Type {
    Name(name: Name)
    Optional(type_: Type)
    Multiple(type_: Type)
}

Name(value: string)