const Node = <Attributes extends S.Schema.Any>(
tag: string,
attributes: Attributes
) =>
S.TaggedStruct(tag, {
...nodeFields,
attributes,
children: S.Array(S.suspend((): S.Schema<Node<any>, NodeEncoded<any>> => Node("?", S.Any)))
})
const Node = <Attributes extends S.Schema.Any>(
tag: string,
attributes: Attributes
) =>
S.TaggedStruct(tag, {
...nodeFields,
attributes,
children: S.Array(S.suspend((): S.Schema<Node<any>, NodeEncoded<any>> => Node("?", S.Any)))
})