diff --git a/Documentation/src/xunit.md b/Documentation/src/xunit.md
index dad06a3d..4f51f2f9 100644
--- a/Documentation/src/xunit.md
+++ b/Documentation/src/xunit.md
@@ -50,7 +50,7 @@ What does change between the xunit versions is the test host and the runner, not
"Verified" means Funcky's own test suite runs green against that version. "Expected to work" means nothing in the
xunit release notes touches what Funcky uses, but the suite is not run against it yet
([#1015](https://github.com/polyadic/funcky/issues/1015) tracks a matrix build). The test host column is xunit's
-minimum; Funcky.Xunit.v3 itself targets `netstandard2.0` and `net6.0`.
+minimum; Funcky.Xunit.v3 itself targets `netstandard2.0` and `net8.0`.
If `dotnet test` on the .NET 10 SDK stops with "Testing with VSTest target is no longer supported by
Microsoft.Testing.Platform", either opt into Microsoft.Testing.Platform in `global.json`
diff --git a/FrameworkFeatureConstants.props b/FrameworkFeatureConstants.props
index a8fe99e6..ec7251ba 100644
--- a/FrameworkFeatureConstants.props
+++ b/FrameworkFeatureConstants.props
@@ -3,19 +3,13 @@
$(DefineConstants);INDEX_OF_CHAR_COMPARISONTYPE_SUPPORTED;TIMESPAN_MULTIPLY_SUPPORTED;SPLIT_ACCEPTS_STRING_SEPARATOR;LAZY_RETURN_CONSTRUCTOR;QUEUE_TRY_OVERLOADS;OPTIMIZED_ELEMENT_AT;RANGE_SUPPORTED;READ_ONLY_SPAN_SUPPORTED;INDEX_TYPE;JOIN_TO_STRING_CHAR_SEPARATOR;REMOVE_EXTENSION
-
+
+
$(DefineConstants);SYSTEM_INDEX_SUPPORTED;IP_END_POINT_TRY_PARSE_SUPPORTED;OPTIMIZED_FIRST_LAST_OR_DEFAULT
-
-
$(DefineConstants);SET_CURRENT_STACK_TRACE_SUPPORTED;DYNAMICALLY_ACCESSED_MEMBERS_ATTRIBUTE_SUPPORTED
-
-
$(DefineConstants);STACK_TRACE_HIDDEN_SUPPORTED;RANDOM_SHARED;DATE_ONLY_SUPPORTED;TIME_ONLY_SUPPORTED;PRIORITY_QUEUE;TRY_GET_NON_ENUMERATED_COUNT;HTTP_HEADERS_NON_VALIDATED;ELEMENT_AT_INDEX
-
-
$(DefineConstants);GENERIC_MATH;GENERIC_PARSABLE;AOT
-
-
$(DefineConstants);RANDOM_SHUFFLE;UTF8_SPAN_PARSABLE;JSON_SERIALIZER_OPTIONS_TRY_GET_TYPE_INFO;IP_NETWORK
diff --git a/Funcky.Async/Funcky.Async.csproj b/Funcky.Async/Funcky.Async.csproj
index ae3dec23..4eaa035f 100644
--- a/Funcky.Async/Funcky.Async.csproj
+++ b/Funcky.Async/Funcky.Async.csproj
@@ -10,7 +10,7 @@
the tests against each version of the range (see the SystemLinqAsyncVersion matrix in build.yml
and Funcky.Async.Test.csproj), which exercises exactly the binary compatibility consumers rely on. -->
net9.0
- net11.0;net10.0;$(FunckyNewestTargetFramework);net8.0;net5.0;netstandard2.1;netstandard2.0
+ net11.0;net10.0;$(FunckyNewestTargetFramework);net8.0;netstandard2.1;netstandard2.0
preview
enable
@@ -42,11 +42,9 @@
SYSTEM_LINQ_ASYNC marks the few places where System.Linq.Async differs from the .NET 10 base class library. -->
$(DefineConstants);ASYNC_SUPPORTED;SYSTEM_LINQ_ASYNC
-
+
true
true
-
-
true
diff --git a/Funcky.Xunit.v3/Funcky.Xunit.v3.csproj b/Funcky.Xunit.v3/Funcky.Xunit.v3.csproj
index 5a45d7d8..d1ce65fa 100644
--- a/Funcky.Xunit.v3/Funcky.Xunit.v3.csproj
+++ b/Funcky.Xunit.v3/Funcky.Xunit.v3.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
$(FunckyNewestTargetFramework);netstandard2.0
preview
enable
@@ -21,7 +21,7 @@
$(DefineConstants);XUNIT_V3
-
+
$(DefineConstants);STACK_TRACE_HIDDEN_SUPPORTED
diff --git a/Funcky.Xunit/Funcky.Xunit.csproj b/Funcky.Xunit/Funcky.Xunit.csproj
index 025f29e2..121e4346 100644
--- a/Funcky.Xunit/Funcky.Xunit.csproj
+++ b/Funcky.Xunit/Funcky.Xunit.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
$(FunckyNewestTargetFramework);netstandard2.0
preview
enable
@@ -19,7 +19,7 @@
true
$(NoWarn);NU5104
-
+
$(DefineConstants);STACK_TRACE_HIDDEN_SUPPORTED
diff --git a/Funcky/CompatibilitySuppressions.xml b/Funcky/CompatibilitySuppressions.xml
index 0e4da7bb..43df4181 100644
--- a/Funcky/CompatibilitySuppressions.xml
+++ b/Funcky/CompatibilitySuppressions.xml
@@ -1,70 +1,46 @@
-
+
+
+ CP0002
+ M:Funcky.Extensions.EnumerableExtensions.Shuffle``1(System.Collections.Generic.IEnumerable{``0})
+ lib/net9.0/Funcky.dll
+ lib/net10.0/Funcky.dll
+
CP0002
M:Funcky.Extensions.EnumerableExtensions.Chunk``1(System.Collections.Generic.IEnumerable{``0},System.Int32)
- lib/net5.0/Funcky.dll
- lib/net6.0/Funcky.dll
+ lib/netstandard2.1/Funcky.dll
+ lib/net8.0/Funcky.dll
CP0002
M:Funcky.Extensions.ParseExtensions.<G>$34505F560D9EACF86A87F3ED1F85E448.ParseCacheControlHeaderValueOrNone
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
+ lib/netstandard2.1/Funcky.dll
+ lib/net8.0/Funcky.dll
CP0002
M:Funcky.Extensions.ParseExtensions.<G>$34505F560D9EACF86A87F3ED1F85E448.ParseEnumOrNone(System.Type,System.Boolean)
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
+ lib/netstandard2.1/Funcky.dll
+ lib/net8.0/Funcky.dll
CP0002
M:Funcky.Extensions.ParseExtensions.<G>$34505F560D9EACF86A87F3ED1F85E448.ParseEnumOrNone(System.Type)
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
+ lib/netstandard2.1/Funcky.dll
+ lib/net8.0/Funcky.dll
CP0002
M:Funcky.Extensions.ParseExtensions.<G>$34505F560D9EACF86A87F3ED1F85E448.ParseEnumOrNone``1
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
+ lib/netstandard2.1/Funcky.dll
+ lib/net8.0/Funcky.dll
CP0002
M:Funcky.Extensions.ParseExtensions.<G>$34505F560D9EACF86A87F3ED1F85E448.ParseEnumOrNone``1(System.Boolean)
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
-
-
- CP0002
- M:Funcky.Extensions.ParseExtensions.<G>$7E0B8C73485617FC5155886DD83A182C.ParseEnumOrNone(System.Type,System.Boolean)
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
-
-
- CP0002
- M:Funcky.Extensions.ParseExtensions.<G>$7E0B8C73485617FC5155886DD83A182C.ParseEnumOrNone(System.Type)
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
-
-
- CP0002
- M:Funcky.Extensions.ParseExtensions.<G>$7E0B8C73485617FC5155886DD83A182C.ParseEnumOrNone``1
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
-
-
- CP0002
- M:Funcky.Extensions.ParseExtensions.<G>$7E0B8C73485617FC5155886DD83A182C.ParseEnumOrNone``1(System.Boolean)
- lib/net6.0/Funcky.dll
- lib/net7.0/Funcky.dll
-
-
- CP0002
- M:Funcky.Extensions.EnumerableExtensions.Shuffle``1(System.Collections.Generic.IEnumerable{``0})
- lib/net9.0/Funcky.dll
- lib/net10.0/Funcky.dll
+ lib/netstandard2.1/Funcky.dll
+ lib/net8.0/Funcky.dll
\ No newline at end of file
diff --git a/Funcky/Funcky.csproj b/Funcky/Funcky.csproj
index 078db584..4780007a 100644
--- a/Funcky/Funcky.csproj
+++ b/Funcky/Funcky.csproj
@@ -1,7 +1,7 @@
net11.0
- $(FunckyNewestTargetFramework);net10.0;net9.0;net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.0;netstandard2.1
+ $(FunckyNewestTargetFramework);net10.0;net9.0;net8.0;netstandard2.0;netstandard2.1
preview
enable
@@ -30,20 +30,15 @@
-
-
+
+
-
+
true
true
-
- false
-
-
true
diff --git a/Funcky/PublicAPI/net5.0/PublicAPI.Shipped.txt b/Funcky/PublicAPI/net5.0/PublicAPI.Shipped.txt
deleted file mode 100644
index d1d03d76..00000000
--- a/Funcky/PublicAPI/net5.0/PublicAPI.Shipped.txt
+++ /dev/null
@@ -1,1575 +0,0 @@
-#nullable enable
-Funcky.Discard
-Funcky.DownCast
-Funcky.EitherOrBoth
-Funcky.EitherOrBoth
-Funcky.EitherOrBoth.EitherOrBoth() -> void
-Funcky.EitherOrBoth.Equals(Funcky.EitherOrBoth other) -> bool
-Funcky.EitherOrBoth.Match(System.Func! left, System.Func! right, System.Func! both) -> TMatchResult
-Funcky.EitherOrBoth.Switch(System.Action! left, System.Action! right, System.Action! both) -> void
-Funcky.Extensions.ActionExtensions
-Funcky.Extensions.DictionaryExtensions
-Funcky.Extensions.EitherPartitions
-Funcky.Extensions.EitherPartitions
-Funcky.Extensions.EitherPartitions.Deconstruct(out System.Collections.Generic.IReadOnlyList! left, out System.Collections.Generic.IReadOnlyList! right) -> void
-Funcky.Extensions.EitherPartitions.EitherPartitions() -> void
-Funcky.Extensions.EitherPartitions.EitherPartitions(System.Collections.Generic.IReadOnlyList! left, System.Collections.Generic.IReadOnlyList! right) -> void
-Funcky.Extensions.EitherPartitions.Left.get -> System.Collections.Generic.IReadOnlyList!
-Funcky.Extensions.EitherPartitions.Right.get -> System.Collections.Generic.IReadOnlyList!
-Funcky.Extensions.EnumerableExtensions
-Funcky.Extensions.EnumeratorExtensions
-Funcky.Extensions.FuncExtensions
-Funcky.Extensions.HttpHeadersExtensions
-Funcky.Extensions.ImmutableListExtensions
-Funcky.Extensions.ListExtensions
-Funcky.Extensions.ParseExtensions
-Funcky.Extensions.Partitions
-Funcky.Extensions.Partitions
-Funcky.Extensions.Partitions.Deconstruct(out System.Collections.Generic.IReadOnlyList! true, out System.Collections.Generic.IReadOnlyList! false) -> void
-Funcky.Extensions.Partitions.False.get -> System.Collections.Generic.IReadOnlyList!
-Funcky.Extensions.Partitions.Partitions() -> void
-Funcky.Extensions.Partitions.Partitions(System.Collections.Generic.IReadOnlyList! true, System.Collections.Generic.IReadOnlyList! false) -> void
-Funcky.Extensions.Partitions.True.get -> System.Collections.Generic.IReadOnlyList!
-Funcky.Extensions.QueryableExtensions
-Funcky.Extensions.QueueExtensions
-Funcky.Extensions.RangeExtensions
-Funcky.Extensions.ResultPartitions
-Funcky.Extensions.ResultPartitions
-Funcky.Extensions.ResultPartitions.Deconstruct(out System.Collections.Generic.IReadOnlyList! error, out System.Collections.Generic.IReadOnlyList! ok) -> void
-Funcky.Extensions.ResultPartitions.Error.get -> System.Collections.Generic.IReadOnlyList!
-Funcky.Extensions.ResultPartitions.Ok.get -> System.Collections.Generic.IReadOnlyList!
-Funcky.Extensions.ResultPartitions.ResultPartitions() -> void
-Funcky.Extensions.ResultPartitions.ResultPartitions(System.Collections.Generic.IReadOnlyList! error, System.Collections.Generic.IReadOnlyList! ok) -> void
-Funcky.Extensions.StreamExtensions
-Funcky.Extensions.StringExtensions
-Funcky.Extensions.ValueWithFirst
-Funcky.Extensions.ValueWithFirst.Deconstruct(out TValue value, out bool isFirst) -> void
-Funcky.Extensions.ValueWithFirst.IsFirst.get -> bool
-Funcky.Extensions.ValueWithFirst.Value.get -> TValue
-Funcky.Extensions.ValueWithFirst.ValueWithFirst() -> void
-Funcky.Extensions.ValueWithFirst.ValueWithFirst(TValue value, bool isFirst) -> void
-Funcky.Extensions.ValueWithIndex
-Funcky.Extensions.ValueWithIndex.Deconstruct(out TValue value, out int index) -> void
-Funcky.Extensions.ValueWithIndex.Index.get -> int
-Funcky.Extensions.ValueWithIndex.Value.get -> TValue
-Funcky.Extensions.ValueWithIndex.ValueWithIndex() -> void
-Funcky.Extensions.ValueWithIndex.ValueWithIndex(TValue value, int index) -> void
-Funcky.Extensions.ValueWithLast
-Funcky.Extensions.ValueWithLast.Deconstruct(out TValue value, out bool isLast) -> void
-Funcky.Extensions.ValueWithLast.IsLast.get -> bool
-Funcky.Extensions.ValueWithLast.Value.get -> TValue
-Funcky.Extensions.ValueWithLast.ValueWithLast() -> void
-Funcky.Extensions.ValueWithLast.ValueWithLast(TValue value, bool isLast) -> void
-Funcky.Extensions.ValueWithPrevious
-Funcky.Extensions.ValueWithPrevious.Deconstruct(out TValue value, out Funcky.Monads.Option previous) -> void
-Funcky.Extensions.ValueWithPrevious.Previous.get -> Funcky.Monads.Option
-Funcky.Extensions.ValueWithPrevious.Value.get -> TValue
-Funcky.Extensions.ValueWithPrevious.ValueWithPrevious() -> void
-Funcky.Extensions.ValueWithPrevious.ValueWithPrevious(TValue value, Funcky.Monads.Option previous) -> void
-Funcky.Functional
-Funcky.IBuffer
-Funcky.Monads.Either
-Funcky.Monads.Either.Either() -> void
-Funcky.Monads.Either.Equals(Funcky.Monads.Either other) -> bool
-Funcky.Monads.Either.Flip() -> Funcky.Monads.Either
-Funcky.Monads.Either.GetOrElse(System.Func! fallback) -> TRight
-Funcky.Monads.Either.GetOrElse(TRight fallback) -> TRight
-Funcky.Monads.Either.Inspect(System.Action! inspector) -> Funcky.Monads.Either
-Funcky.Monads.Either.InspectLeft(System.Action! inspector) -> Funcky.Monads.Either
-Funcky.Monads.Either.Match(System.Func! left, System.Func! right) -> TMatchResult
-Funcky.Monads.Either.OrElse(Funcky.Monads.Either fallback) -> Funcky.Monads.Either
-Funcky.Monads.Either.OrElse(System.Func>! fallback) -> Funcky.Monads.Either
-Funcky.Monads.Either.Select(System.Func! selector) -> Funcky.Monads.Either
-Funcky.Monads.Either.SelectLeft(System.Func! selector) -> Funcky.Monads.Either
-Funcky.Monads.Either.SelectMany(System.Func>! selector, System.Func! resultSelector) -> Funcky.Monads.Either
-Funcky.Monads.Either.SelectMany(System.Func>! selector) -> Funcky.Monads.Either
-Funcky.Monads.Either.Switch(System.Action! left, System.Action! right) -> void
-Funcky.Monads.Either
-Funcky.Monads.EitherExtensions
-Funcky.Monads.IEither
-Funcky.Monads.IOption
-Funcky.Monads.Lazy
-Funcky.Monads.LazyExtensions
-Funcky.Monads.Option
-Funcky.Monads.Option
-Funcky.Monads.Option.AndThen(System.Action! action) -> void
-Funcky.Monads.Option.AndThen(System.Func>! selector) -> Funcky.Monads.Option
-Funcky.Monads.Option.AndThen(System.Func! selector) -> Funcky.Monads.Option
-Funcky.Monads.Option.CompareTo(Funcky.Monads.Option other) -> int
-Funcky.Monads.Option.CompareTo(object? obj) -> int
-Funcky.Monads.Option.Count.get -> int
-Funcky.Monads.Option.Equals(Funcky.Monads.Option other) -> bool
-Funcky.Monads.Option.GetOrElse(System.Func! fallback) -> TItem
-Funcky.Monads.Option.GetOrElse(TItem fallback) -> TItem
-Funcky.Monads.Option.Inspect(System.Action! inspector) -> Funcky.Monads.Option
-Funcky.Monads.Option.InspectNone(System.Action! inspector) -> Funcky.Monads.Option
-Funcky.Monads.Option.Match(System.Func! none, System.Func! some) -> TResult
-Funcky.Monads.Option.Match(TResult none, System.Func! some) -> TResult
-Funcky.Monads.Option.Option() -> void
-Funcky.Monads.Option.OrElse(Funcky.Monads.Option fallback) -> Funcky.Monads.Option
-Funcky.Monads.Option.OrElse(System.Func>! fallback) -> Funcky.Monads.Option
-Funcky.Monads.Option.Select(System.Func! selector) -> Funcky.Monads.Option
-Funcky.Monads.Option.SelectMany(System.Func>! selector, System.Func! resultSelector) -> Funcky.Monads.Option
-Funcky.Monads.Option.SelectMany(System.Func>! selector) -> Funcky.Monads.Option
-Funcky.Monads.Option.Switch(System.Action! none, System.Action! some) -> void
-Funcky.Monads.Option.ToEnumerable() -> System.Collections.Generic.IEnumerable!
-Funcky.Monads.Option.TryGetValue(out TItem? item) -> bool
-Funcky.Monads.Option.Where(System.Func! predicate) -> Funcky.Monads.Option
-Funcky.Monads.Option.this[int index].get -> TItem
-Funcky.Monads.OptionComparer
-Funcky.Monads.OptionComparer
-Funcky.Monads.OptionEqualityComparer
-Funcky.Monads.OptionEqualityComparer
-Funcky.Monads.OptionExtensions
-Funcky.Monads.OptionJsonConverter
-Funcky.Monads.OptionJsonConverter.OptionJsonConverter() -> void
-Funcky.Monads.Reader
-virtual Funcky.Monads.Reader.Invoke(TEnvironment environment) -> TResult
-Funcky.Monads.Reader
-Funcky.Monads.ReaderExtensions
-Funcky.Monads.Result
-Funcky.Monads.Result
-Funcky.Monads.Result.Equals(Funcky.Monads.Result other) -> bool
-Funcky.Monads.Result.GetOrElse(System.Func! fallback) -> TValidResult
-Funcky.Monads.Result.GetOrElse(TValidResult fallback) -> TValidResult
-Funcky.Monads.Result.GetOrThrow() -> TValidResult
-Funcky.Monads.Result.Inspect(System.Action! inspector) -> Funcky.Monads.Result
-Funcky.Monads.Result.InspectError(System.Action! inspector) -> Funcky.Monads.Result
-Funcky.Monads.Result.Match(System.Func! ok, System.Func! error) -> TMatchResult
-Funcky.Monads.Result.OrElse(Funcky.Monads.Result fallback) -> Funcky.Monads.Result
-Funcky.Monads.Result.OrElse(System.Func>! fallback) -> Funcky.Monads.Result
-Funcky.Monads.Result.Result() -> void
-Funcky.Monads.Result.Select(System.Func! selector) -> Funcky.Monads.Result
-Funcky.Monads.Result.SelectMany(System.Func>! selector) -> Funcky.Monads.Result
-Funcky.Monads.Result.SelectMany(System.Func>! selector, System.Func! resultSelector) -> Funcky.Monads.Result
-Funcky.Monads.Result.Switch(System.Action! ok, System.Action! error) -> void
-Funcky.Monads.ResultExtensions
-Funcky.RequireClass
-Funcky.RequireClass.RequireClass() -> void
-Funcky.RequireStruct
-Funcky.RequireStruct.RequireStruct() -> void
-Funcky.RetryPolicies.ConstantDelayPolicy
-Funcky.RetryPolicies.ConstantDelayPolicy.ConstantDelayPolicy(int maxRetries, System.TimeSpan delay) -> void
-Funcky.RetryPolicies.ConstantDelayPolicy.Delay(int retryCount) -> System.TimeSpan
-Funcky.RetryPolicies.ConstantDelayPolicy.MaxRetries.get -> int
-Funcky.RetryPolicies.DoNotRetryPolicy
-Funcky.RetryPolicies.DoNotRetryPolicy.Delay(int retryCount) -> System.TimeSpan
-Funcky.RetryPolicies.DoNotRetryPolicy.DoNotRetryPolicy() -> void
-Funcky.RetryPolicies.DoNotRetryPolicy.MaxRetries.get -> int
-Funcky.RetryPolicies.ExponentialBackOffRetryPolicy
-Funcky.RetryPolicies.ExponentialBackOffRetryPolicy.Delay(int retryCount) -> System.TimeSpan
-Funcky.RetryPolicies.ExponentialBackOffRetryPolicy.ExponentialBackOffRetryPolicy(int maxRetries, System.TimeSpan firstDelay) -> void
-Funcky.RetryPolicies.ExponentialBackOffRetryPolicy.MaxRetries.get -> int
-Funcky.RetryPolicies.IRetryPolicy
-Funcky.RetryPolicies.IRetryPolicy.Delay(int retryCount) -> System.TimeSpan
-Funcky.RetryPolicies.IRetryPolicy.MaxRetries.get -> int
-Funcky.RetryPolicies.LinearBackOffRetryPolicy
-Funcky.RetryPolicies.LinearBackOffRetryPolicy.Delay(int retryCount) -> System.TimeSpan
-Funcky.RetryPolicies.LinearBackOffRetryPolicy.LinearBackOffRetryPolicy(int maxRetries, System.TimeSpan firstDelay) -> void
-Funcky.RetryPolicies.LinearBackOffRetryPolicy.MaxRetries.get -> int
-Funcky.RetryPolicies.NoDelayRetryPolicy
-Funcky.RetryPolicies.NoDelayRetryPolicy.NoDelayRetryPolicy(int maxRetries) -> void
-Funcky.Sequence
-Funcky.Unit
-Funcky.Unit.CompareTo(Funcky.Unit other) -> int
-Funcky.Unit.Equals(Funcky.Unit other) -> bool
-Funcky.Unit.Unit() -> void
-Funcky.UpCast
-override Funcky.EitherOrBoth.Equals(object? obj) -> bool
-override Funcky.EitherOrBoth.GetHashCode() -> int
-override Funcky.Monads.Either.Equals(object? obj) -> bool
-override Funcky.Monads.Either.GetHashCode() -> int
-override Funcky.Monads.Either.ToString() -> string!
-override Funcky.Monads.Option.Equals(object? obj) -> bool
-override Funcky.Monads.Option.GetHashCode() -> int
-override Funcky.Monads.Option.ToString() -> string!
-override Funcky.Monads.OptionJsonConverter.CanConvert(System.Type! typeToConvert) -> bool
-override Funcky.Monads.OptionJsonConverter.CreateConverter(System.Type! typeToConvert, System.Text.Json.JsonSerializerOptions! options) -> System.Text.Json.Serialization.JsonConverter!
-override Funcky.Monads.Result