private static Scope Read(Scope _, OrExp x) { var scopes2 = x.Scopes .Select(Read) .SelectMany(s => s.Exp switch { OrExp y => y.Scopes.AsEnumerable(), _ => new[] { s } })
int _GetHashCode(OrExp x) => HashCode.Combine( typeof(OrExp), x.Scopes);
bool _Equals(OrExp l, OrExp r) => l.Scopes.Equals(r.Scopes);