Type: | { kind: "plain"; raw?: xir.Type; text: string } | { element: xir.Type; kind: "array"; length: number | null } | { kind: "ref"; restricted?: boolean; to: xir.Type } | { args: xir.Type[]; kind: "function"; returns: xir.Type } | { inner: xir.Type; kind: "qual"; qualifier: TypeQualifier } | { inner: xir.Type; kind: "namespaced"; namespace: string }