From b998a44e59339840d347a61e7275149d9ae5c20a Mon Sep 17 00:00:00 2001
From: Damian Edwards <damian@damianedwards.com>
Date: Thu, 28 Apr 2022 12:33:40 -0700
Subject: [PATCH] Ensure IResult types throw ArgumentNullExceptions on public
 methods (#41412)

Fixes #41383
- Ensure IResult types throw ArgumentNullExceptions on public methods
- Removed unused internal constructors on result types
- Ensure argument exceptions are thrown by public ctors & static factory methods
- Do not throw argument exceptions from internal ctors
- Add tests for all public ctors and factory methods that throw argument exceptions
---
 .../src/HttpValidationProblemDetails.cs       |   2 +-
 src/Http/Http.Results/src/Accepted.cs         |   9 +-
 src/Http/Http.Results/src/AcceptedAtRoute.cs  |   4 +
 .../Http.Results/src/AcceptedAtRouteOfT.cs    |   4 +
 src/Http/Http.Results/src/AcceptedOfT.cs      |   4 +
 src/Http/Http.Results/src/BadRequest.cs       |   4 +
 src/Http/Http.Results/src/BadRequestOfT.cs    |   4 +
 .../Http.Results/src/ChallengeHttpResult.cs   |  23 +--
 src/Http/Http.Results/src/Conflict.cs         |   4 +
 src/Http/Http.Results/src/ConflictOfT.cs      |   4 +
 .../Http.Results/src/ContentHttpResult.cs     |   2 +
 src/Http/Http.Results/src/Created.cs          |   4 +
 src/Http/Http.Results/src/CreatedAtRoute.cs   |   4 +
 .../Http.Results/src/CreatedAtRouteOfT.cs     |   4 +
 src/Http/Http.Results/src/CreatedOfT.cs       |   4 +
 src/Http/Http.Results/src/EmptyHttpResult.cs  |   2 +
 .../Http.Results/src/FileContentHttpResult.cs |   2 +
 .../Http.Results/src/FileStreamHttpResult.cs  |   2 +
 src/Http/Http.Results/src/ForbidHttpResult.cs |  12 +-
 .../Http.Results/src/JsonHttpResultOfT.cs     |  14 +-
 src/Http/Http.Results/src/NoContent.cs        |   4 +
 src/Http/Http.Results/src/NotFound.cs         |   4 +
 src/Http/Http.Results/src/NotFoundOfT.cs      |   4 +
 src/Http/Http.Results/src/Ok.cs               |   4 +
 src/Http/Http.Results/src/OkOfT.cs            |   4 +
 .../src/PhysicalFileHttpResult.cs             |   2 +
 .../Http.Results/src/ProblemHttpResult.cs     |   2 +
 .../Http.Results/src/PublicAPI.Unshipped.txt  |  76 ++++----
 .../Http.Results/src/PushStreamHttpResult.cs  |   2 +
 .../Http.Results/src/RedirectHttpResult.cs    |  12 +-
 .../src/RedirectToRouteHttpResult.cs          |  36 +---
 ...{ResultsOfT.cs => ResultsOfT.Generated.cs} |  20 +-
 src/Http/Http.Results/src/SignInHttpResult.cs |   4 +-
 .../Http.Results/src/SignOutHttpResult.cs     |  22 +--
 .../Http.Results/src/StatusCodeHttpResult.cs  |   6 +-
 src/Http/Http.Results/src/TypedResults.cs     |  92 ++++++---
 .../src/UnauthorizedHttpResult.cs             |   2 +
 .../Http.Results/src/UnprocessableEntity.cs   |   4 +
 .../src/UnprocessableEntityOfT.cs             |   4 +
 .../Http.Results/src/ValidationProblem.cs     |   4 +
 .../Http.Results/src/VirtualFileHttpResult.cs |   4 +-
 .../test/AcceptedAtRouteOfTResultTests.cs     |  18 ++
 .../test/AcceptedAtRouteResultTests.cs        |  18 ++
 .../test/AcceptedOfTResultTests.cs            |  18 ++
 .../Http.Results/test/AcceptedResultTests.cs  |  20 +-
 .../test/BadRequestOfTResultTests.cs          |  18 ++
 .../test/BadRequestResultTests.cs             |  18 ++
 .../Http.Results/test/ChallengeResultTests.cs |  11 ++
 .../test/ConflictOfTResultTests.cs            |  18 ++
 .../Http.Results/test/ConflictResultTests.cs  |  18 ++
 .../Http.Results/test/ContentResultTests.cs   |  11 ++
 .../test/CreatedAtRouteOfTResultTests.cs      |  18 ++
 .../test/CreatedAtRouteResultTests.cs         |  18 ++
 .../test/CreatedOfTResultTests.cs             |  18 ++
 .../Http.Results/test/CreatedResultTests.cs   |  18 ++
 .../Http.Results/test/EmptyResultTests.cs     |  11 ++
 .../Http.Results/test/ForbidResultTests.cs    |  11 ++
 .../test/HttpFileStreamResultTests.cs         |  10 +
 src/Http/Http.Results/test/JsonResultTests.cs |  11 ++
 ...osoft.AspNetCore.Http.Results.Tests.csproj |   2 +-
 .../Http.Results/test/NoContentResultTests.cs |  18 ++
 .../test/NotFoundOfTResultTests.cs            |  18 ++
 .../Http.Results/test/NotFoundResultTests.cs  |  18 ++
 .../Http.Results/test/OkOfTResultTests.cs     |  18 ++
 src/Http/Http.Results/test/OkResultTests.cs   |  18 ++
 .../Http.Results/test/ProblemResultTests.cs   |  11 ++
 .../test/PushStreamResultTests.cs             |  11 ++
 .../Http.Results/test/RedirectResultTests.cs  |  11 ++
 .../test/RedirectToRouteResultTests.cs        |  11 ++
 .../test/ResultsOfTTests.Generated.cs         |  35 ++++
 src/Http/Http.Results/test/ResultsOfTTests.cs |   4 +-
 src/Http/Http.Results/test/ResultsTests.cs    | 100 +++++++++-
 .../Http.Results/test/SignInResultTests.cs    |  11 ++
 .../Http.Results/test/SignOutResultTests.cs   |  11 ++
 .../test/StatusCodeResultTests.cs             |  11 ++
 .../Http.Results/test/TypedResultsTests.cs    | 176 +++++++++++++++++-
 .../test/UnauthorizedResultTests.cs           |  11 ++
 .../test/UnprocessableEntityOfTResultTests.cs |  18 ++
 .../test/UnprocessableEntityResultTests.cs    |  18 ++
 .../test/ValidationProblemResultTests.cs      |  18 ++
 .../tools/ResultsOfTGenerator/Program.cs      |  67 +++++--
 81 files changed, 1115 insertions(+), 208 deletions(-)
 rename src/Http/Http.Results/src/{ResultsOfT.cs => ResultsOfT.Generated.cs} (96%)

diff --git a/src/Http/Http.Extensions/src/HttpValidationProblemDetails.cs b/src/Http/Http.Extensions/src/HttpValidationProblemDetails.cs
index 5bab6886c72..12ccd028bab 100644
--- a/src/Http/Http.Extensions/src/HttpValidationProblemDetails.cs
+++ b/src/Http/Http.Extensions/src/HttpValidationProblemDetails.cs
@@ -25,7 +25,7 @@ public class HttpValidationProblemDetails : ProblemDetails
     /// </summary>
     /// <param name="errors">The validation errors.</param>
     public HttpValidationProblemDetails(IDictionary<string, string[]> errors)
-        : this(new Dictionary<string, string[]>(errors, StringComparer.Ordinal))
+        : this(new Dictionary<string, string[]>(errors ?? throw new ArgumentNullException(nameof(errors)), StringComparer.Ordinal))
     {
     }
 
diff --git a/src/Http/Http.Results/src/Accepted.cs b/src/Http/Http.Results/src/Accepted.cs
index fed67811d4d..20d406d579e 100644
--- a/src/Http/Http.Results/src/Accepted.cs
+++ b/src/Http/Http.Results/src/Accepted.cs
@@ -31,11 +31,6 @@ public sealed class Accepted : IResult, IEndpointMetadataProvider
     /// <param name="locationUri">The location at which the status of requested content can be monitored.</param>
     internal Accepted(Uri locationUri)
     {
-        if (locationUri == null)
-        {
-            throw new ArgumentNullException(nameof(locationUri));
-        }
-
         if (locationUri.IsAbsoluteUri)
         {
             Location = locationUri.AbsoluteUri;
@@ -59,6 +54,8 @@ public sealed class Accepted : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.AcceptedResult");
@@ -77,6 +74,8 @@ public sealed class Accepted : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status202Accepted));
     }
 }
diff --git a/src/Http/Http.Results/src/AcceptedAtRoute.cs b/src/Http/Http.Results/src/AcceptedAtRoute.cs
index 96bf99aab6b..c67c0bd12c7 100644
--- a/src/Http/Http.Results/src/AcceptedAtRoute.cs
+++ b/src/Http/Http.Results/src/AcceptedAtRoute.cs
@@ -57,6 +57,8 @@ public sealed class AcceptedAtRoute : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var linkGenerator = httpContext.RequestServices.GetRequiredService<LinkGenerator>();
         var url = linkGenerator.GetUriByAddress(
             httpContext,
@@ -84,6 +86,8 @@ public sealed class AcceptedAtRoute : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status202Accepted));
     }
 }
diff --git a/src/Http/Http.Results/src/AcceptedAtRouteOfT.cs b/src/Http/Http.Results/src/AcceptedAtRouteOfT.cs
index 4855b6e2c89..e9269667f27 100644
--- a/src/Http/Http.Results/src/AcceptedAtRouteOfT.cs
+++ b/src/Http/Http.Results/src/AcceptedAtRouteOfT.cs
@@ -68,6 +68,8 @@ public sealed class AcceptedAtRoute<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var linkGenerator = httpContext.RequestServices.GetRequiredService<LinkGenerator>();
         var url = linkGenerator.GetUriByAddress(
             httpContext,
@@ -95,6 +97,8 @@ public sealed class AcceptedAtRoute<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status202Accepted, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/AcceptedOfT.cs b/src/Http/Http.Results/src/AcceptedOfT.cs
index ebe84dbfe6f..c648ac33820 100644
--- a/src/Http/Http.Results/src/AcceptedOfT.cs
+++ b/src/Http/Http.Results/src/AcceptedOfT.cs
@@ -71,6 +71,8 @@ public sealed class Accepted<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         if (!string.IsNullOrEmpty(Location))
         {
             httpContext.Response.Headers.Location = Location;
@@ -92,6 +94,8 @@ public sealed class Accepted<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status202Accepted, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/BadRequest.cs b/src/Http/Http.Results/src/BadRequest.cs
index 9dd3b161f11..74aba5eab7a 100644
--- a/src/Http/Http.Results/src/BadRequest.cs
+++ b/src/Http/Http.Results/src/BadRequest.cs
@@ -29,6 +29,8 @@ public sealed class BadRequest : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.BadRequestObjectResult");
@@ -42,6 +44,8 @@ public sealed class BadRequest : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status400BadRequest));
     }
 }
diff --git a/src/Http/Http.Results/src/BadRequestOfT.cs b/src/Http/Http.Results/src/BadRequestOfT.cs
index 097e3c8793c..d8a0e5ac77e 100644
--- a/src/Http/Http.Results/src/BadRequestOfT.cs
+++ b/src/Http/Http.Results/src/BadRequestOfT.cs
@@ -38,6 +38,8 @@ public sealed class BadRequest<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.BadRequestObjectResult");
@@ -54,6 +56,8 @@ public sealed class BadRequest<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status400BadRequest, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/ChallengeHttpResult.cs b/src/Http/Http.Results/src/ChallengeHttpResult.cs
index 1772c6f0d37..23714ab133e 100644
--- a/src/Http/Http.Results/src/ChallengeHttpResult.cs
+++ b/src/Http/Http.Results/src/ChallengeHttpResult.cs
@@ -21,16 +21,6 @@ public sealed partial class ChallengeHttpResult : IResult
     {
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="ChallengeHttpResult"/> with the
-    /// specified authentication scheme.
-    /// </summary>
-    /// <param name="authenticationScheme">The authentication scheme to challenge.</param>
-    internal ChallengeHttpResult(string authenticationScheme)
-        : this(new[] { authenticationScheme })
-    {
-    }
-
     /// <summary>
     /// Initializes a new instance of <see cref="ChallengeHttpResult"/> with the
     /// specified authentication schemes.
@@ -41,17 +31,6 @@ public sealed partial class ChallengeHttpResult : IResult
     {
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="ChallengeHttpResult"/> with the
-    /// specified <paramref name="properties"/>.
-    /// </summary>
-    /// <param name="properties"><see cref="AuthenticationProperties"/> used to perform the authentication
-    /// challenge.</param>
-    internal ChallengeHttpResult(AuthenticationProperties? properties)
-        : this(Array.Empty<string>(), properties)
-    {
-    }
-
     /// <summary>
     /// Initializes a new instance of <see cref="ChallengeHttpResult"/> with the
     /// specified authentication scheme and <paramref name="properties"/>.
@@ -90,6 +69,8 @@ public sealed partial class ChallengeHttpResult : IResult
     /// <inheritdoc/>
     public async Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.ChallengeResult");
diff --git a/src/Http/Http.Results/src/Conflict.cs b/src/Http/Http.Results/src/Conflict.cs
index 12a639bba0e..fb3f1e51eb9 100644
--- a/src/Http/Http.Results/src/Conflict.cs
+++ b/src/Http/Http.Results/src/Conflict.cs
@@ -29,6 +29,8 @@ public sealed class Conflict : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.ConflictObjectResult");
@@ -42,6 +44,8 @@ public sealed class Conflict : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status409Conflict));
     }
 }
diff --git a/src/Http/Http.Results/src/ConflictOfT.cs b/src/Http/Http.Results/src/ConflictOfT.cs
index f5fb98e193d..a589c281d13 100644
--- a/src/Http/Http.Results/src/ConflictOfT.cs
+++ b/src/Http/Http.Results/src/ConflictOfT.cs
@@ -38,6 +38,8 @@ public sealed class Conflict<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.ConflictObjectResult");
@@ -54,6 +56,8 @@ public sealed class Conflict<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status409Conflict, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/ContentHttpResult.cs b/src/Http/Http.Results/src/ContentHttpResult.cs
index fa765a137ee..816879bc600 100644
--- a/src/Http/Http.Results/src/ContentHttpResult.cs
+++ b/src/Http/Http.Results/src/ContentHttpResult.cs
@@ -57,6 +57,8 @@ public sealed partial class ContentHttpResult : IResult
     /// <returns>A task that represents the asynchronous execute operation.</returns>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.ContentResult");
diff --git a/src/Http/Http.Results/src/Created.cs b/src/Http/Http.Results/src/Created.cs
index 0f94c05771d..4eb21037f7a 100644
--- a/src/Http/Http.Results/src/Created.cs
+++ b/src/Http/Http.Results/src/Created.cs
@@ -56,6 +56,8 @@ public sealed class Created : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.CreatedResult");
@@ -74,6 +76,8 @@ public sealed class Created : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status201Created));
     }
 }
diff --git a/src/Http/Http.Results/src/CreatedAtRoute.cs b/src/Http/Http.Results/src/CreatedAtRoute.cs
index 7cb9b31f0b5..490bfb12616 100644
--- a/src/Http/Http.Results/src/CreatedAtRoute.cs
+++ b/src/Http/Http.Results/src/CreatedAtRoute.cs
@@ -57,6 +57,8 @@ public sealed class CreatedAtRoute : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var linkGenerator = httpContext.RequestServices.GetRequiredService<LinkGenerator>();
         var url = linkGenerator.GetUriByRouteValues(
             httpContext,
@@ -84,6 +86,8 @@ public sealed class CreatedAtRoute : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status201Created));
     }
 }
diff --git a/src/Http/Http.Results/src/CreatedAtRouteOfT.cs b/src/Http/Http.Results/src/CreatedAtRouteOfT.cs
index c4260b27f0a..325c3fdc1ce 100644
--- a/src/Http/Http.Results/src/CreatedAtRouteOfT.cs
+++ b/src/Http/Http.Results/src/CreatedAtRouteOfT.cs
@@ -68,6 +68,8 @@ public sealed class CreatedAtRoute<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var linkGenerator = httpContext.RequestServices.GetRequiredService<LinkGenerator>();
         var url = linkGenerator.GetUriByRouteValues(
             httpContext,
@@ -98,6 +100,8 @@ public sealed class CreatedAtRoute<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status201Created, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/CreatedOfT.cs b/src/Http/Http.Results/src/CreatedOfT.cs
index 5523c5f87a7..8589c8bbcbb 100644
--- a/src/Http/Http.Results/src/CreatedOfT.cs
+++ b/src/Http/Http.Results/src/CreatedOfT.cs
@@ -69,6 +69,8 @@ public sealed class Created<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         if (!string.IsNullOrEmpty(Location))
         {
             httpContext.Response.Headers.Location = Location;
@@ -90,6 +92,8 @@ public sealed class Created<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status201Created, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/EmptyHttpResult.cs b/src/Http/Http.Results/src/EmptyHttpResult.cs
index ccdc3bd0598..459a17a22c1 100644
--- a/src/Http/Http.Results/src/EmptyHttpResult.cs
+++ b/src/Http/Http.Results/src/EmptyHttpResult.cs
@@ -21,6 +21,8 @@ public sealed class EmptyHttpResult : IResult
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         return Task.CompletedTask;
     }
 }
diff --git a/src/Http/Http.Results/src/FileContentHttpResult.cs b/src/Http/Http.Results/src/FileContentHttpResult.cs
index 960836b9947..479726e79be 100644
--- a/src/Http/Http.Results/src/FileContentHttpResult.cs
+++ b/src/Http/Http.Results/src/FileContentHttpResult.cs
@@ -106,6 +106,8 @@ public sealed partial class FileContentHttpResult : IResult
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.FileContentResult");
diff --git a/src/Http/Http.Results/src/FileStreamHttpResult.cs b/src/Http/Http.Results/src/FileStreamHttpResult.cs
index eff283d20d2..092fd6e0e91 100644
--- a/src/Http/Http.Results/src/FileStreamHttpResult.cs
+++ b/src/Http/Http.Results/src/FileStreamHttpResult.cs
@@ -115,6 +115,8 @@ public sealed class FileStreamHttpResult : IResult
     /// <inheritdoc/>
     public async Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.FileStreamResult");
diff --git a/src/Http/Http.Results/src/ForbidHttpResult.cs b/src/Http/Http.Results/src/ForbidHttpResult.cs
index 5afdb53b85d..2286e29fcb0 100644
--- a/src/Http/Http.Results/src/ForbidHttpResult.cs
+++ b/src/Http/Http.Results/src/ForbidHttpResult.cs
@@ -21,16 +21,6 @@ public sealed partial class ForbidHttpResult : IResult
     {
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="ForbidHttpResult"/> with the
-    /// specified authentication scheme.
-    /// </summary>
-    /// <param name="authenticationScheme">The authentication scheme to challenge.</param>
-    internal ForbidHttpResult(string authenticationScheme)
-        : this(new[] { authenticationScheme })
-    {
-    }
-
     /// <summary>
     /// Initializes a new instance of <see cref="ForbidHttpResult"/> with the
     /// specified authentication schemes.
@@ -90,6 +80,8 @@ public sealed partial class ForbidHttpResult : IResult
     /// <inheritdoc />
     public async Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.ForbidResult");
diff --git a/src/Http/Http.Results/src/JsonHttpResultOfT.cs b/src/Http/Http.Results/src/JsonHttpResultOfT.cs
index dec845ac206..58496fbb8c1 100644
--- a/src/Http/Http.Results/src/JsonHttpResultOfT.cs
+++ b/src/Http/Http.Results/src/JsonHttpResultOfT.cs
@@ -34,18 +34,6 @@ public sealed partial class JsonHttpResult<TValue> : IResult
     {
     }
 
-    /// <summary>
-    /// Initializes a new instance of the <see cref="Json"/> class with the values.
-    /// </summary>
-    /// <param name="value">The value to format in the entity body.</param>
-    /// <param name="contentType">The value for the <c>Content-Type</c> header</param>
-    /// <param name="jsonSerializerOptions">The serializer settings.</param>
-    internal JsonHttpResult(TValue? value, string? contentType, JsonSerializerOptions? jsonSerializerOptions)
-        : this(value, statusCode: null, contentType: contentType, jsonSerializerOptions: jsonSerializerOptions)
-    {
-
-    }
-
     /// <summary>
     /// Initializes a new instance of the <see cref="Json"/> class with the values.
     /// </summary>
@@ -91,6 +79,8 @@ public sealed partial class JsonHttpResult<TValue> : IResult
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.JsonResult");
diff --git a/src/Http/Http.Results/src/NoContent.cs b/src/Http/Http.Results/src/NoContent.cs
index 68920021f36..a7553f706ed 100644
--- a/src/Http/Http.Results/src/NoContent.cs
+++ b/src/Http/Http.Results/src/NoContent.cs
@@ -28,6 +28,8 @@ public class NoContent : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.NoContentResult");
@@ -42,6 +44,8 @@ public class NoContent : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status204NoContent));
     }
 }
diff --git a/src/Http/Http.Results/src/NotFound.cs b/src/Http/Http.Results/src/NotFound.cs
index 9b0dbe7848d..7118acac280 100644
--- a/src/Http/Http.Results/src/NotFound.cs
+++ b/src/Http/Http.Results/src/NotFound.cs
@@ -28,6 +28,8 @@ public sealed class NotFound : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.NotFoundObjectResult");
@@ -41,6 +43,8 @@ public sealed class NotFound : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status404NotFound));
     }
 }
diff --git a/src/Http/Http.Results/src/NotFoundOfT.cs b/src/Http/Http.Results/src/NotFoundOfT.cs
index 8e1bacf533e..8da3d95b1dc 100644
--- a/src/Http/Http.Results/src/NotFoundOfT.cs
+++ b/src/Http/Http.Results/src/NotFoundOfT.cs
@@ -37,6 +37,8 @@ public sealed class NotFound<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.NotFoundObjectResult");
@@ -53,6 +55,8 @@ public sealed class NotFound<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status404NotFound, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/Ok.cs b/src/Http/Http.Results/src/Ok.cs
index 8d2197d0e45..8bd80f9ba6b 100644
--- a/src/Http/Http.Results/src/Ok.cs
+++ b/src/Http/Http.Results/src/Ok.cs
@@ -28,6 +28,8 @@ public sealed class Ok : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.OkObjectResult");
@@ -41,6 +43,8 @@ public sealed class Ok : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status200OK));
     }
 }
diff --git a/src/Http/Http.Results/src/OkOfT.cs b/src/Http/Http.Results/src/OkOfT.cs
index ccbef8a73b7..494f6d9a3e7 100644
--- a/src/Http/Http.Results/src/OkOfT.cs
+++ b/src/Http/Http.Results/src/OkOfT.cs
@@ -37,6 +37,8 @@ public sealed class Ok<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.OkObjectResult");
@@ -53,6 +55,8 @@ public sealed class Ok<TValue> : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status200OK, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/PhysicalFileHttpResult.cs b/src/Http/Http.Results/src/PhysicalFileHttpResult.cs
index 4e69b71a88f..415124218ab 100644
--- a/src/Http/Http.Results/src/PhysicalFileHttpResult.cs
+++ b/src/Http/Http.Results/src/PhysicalFileHttpResult.cs
@@ -107,6 +107,8 @@ public sealed partial class PhysicalFileHttpResult : IResult
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var fileInfo = GetFileInfoWrapper(FileName);
         if (!fileInfo.Exists)
         {
diff --git a/src/Http/Http.Results/src/ProblemHttpResult.cs b/src/Http/Http.Results/src/ProblemHttpResult.cs
index 45b8017565b..bd7e72ff87a 100644
--- a/src/Http/Http.Results/src/ProblemHttpResult.cs
+++ b/src/Http/Http.Results/src/ProblemHttpResult.cs
@@ -42,6 +42,8 @@ public sealed class ProblemHttpResult : IResult
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger(typeof(ProblemHttpResult));
 
diff --git a/src/Http/Http.Results/src/PublicAPI.Unshipped.txt b/src/Http/Http.Results/src/PublicAPI.Unshipped.txt
index e87a32cfd7d..4178ba1a4ab 100644
--- a/src/Http/Http.Results/src/PublicAPI.Unshipped.txt
+++ b/src/Http/Http.Results/src/PublicAPI.Unshipped.txt
@@ -144,21 +144,19 @@ Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.Permanent.get ->
 Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.PreserveMethod.get -> bool
 Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.RouteName.get -> string?
 Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary?
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.Result.get -> Microsoft.AspNetCore.Http.IResult!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.Result.get -> Microsoft.AspNetCore.Http.IResult!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.Result.get -> Microsoft.AspNetCore.Http.IResult!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.Result.get -> Microsoft.AspNetCore.Http.IResult!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>.Result.get -> Microsoft.AspNetCore.Http.IResult!
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext httpContext) -> System.Threading.Tasks.Task
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.Result.get -> Microsoft.AspNetCore.Http.IResult
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext httpContext) -> System.Threading.Tasks.Task
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.Result.get -> Microsoft.AspNetCore.Http.IResult
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext httpContext) -> System.Threading.Tasks.Task
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.Result.get -> Microsoft.AspNetCore.Http.IResult
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext httpContext) -> System.Threading.Tasks.Task
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.Result.get -> Microsoft.AspNetCore.Http.IResult
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>
 Microsoft.AspNetCore.Http.HttpResults.SignInHttpResult
 Microsoft.AspNetCore.Http.HttpResults.SignInHttpResult.AuthenticationScheme.get -> string?
 Microsoft.AspNetCore.Http.HttpResults.SignInHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
@@ -197,26 +195,6 @@ Microsoft.AspNetCore.Http.HttpResults.VirtualFileHttpResult.FileName.get -> stri
 Microsoft.AspNetCore.Http.HttpResults.VirtualFileHttpResult.LastModified.get -> System.DateTimeOffset?
 Microsoft.AspNetCore.Http.TypedResults
 static Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.Instance.get -> Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult3 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult4 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult5 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult6 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult3 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult4 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult5 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>!(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>!(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>!(TResult3 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>!(TResult4 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>!(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>!(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>!(TResult3 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>!(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>!
-static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>!(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>!
 static Microsoft.AspNetCore.Http.Results.Bytes(System.ReadOnlyMemory<byte> contents, string? contentType = null, string? fileDownloadName = null, bool enableRangeProcessing = false, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null) -> Microsoft.AspNetCore.Http.IResult!
 static Microsoft.AspNetCore.Http.Results.Empty.get -> Microsoft.AspNetCore.Http.IResult!
 static Microsoft.AspNetCore.Http.Results.Stream(System.Func<System.IO.Stream!, System.Threading.Tasks.Task!>! streamWriterCallback, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null) -> Microsoft.AspNetCore.Http.IResult!
@@ -234,8 +212,8 @@ static Microsoft.AspNetCore.Http.TypedResults.Bytes(byte[]! contents, string? co
 static Microsoft.AspNetCore.Http.TypedResults.Challenge(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties = null, System.Collections.Generic.IList<string!>? authenticationSchemes = null) -> Microsoft.AspNetCore.Http.HttpResults.ChallengeHttpResult!
 static Microsoft.AspNetCore.Http.TypedResults.Conflict() -> Microsoft.AspNetCore.Http.HttpResults.Conflict!
 static Microsoft.AspNetCore.Http.TypedResults.Conflict<TValue>(TValue? error) -> Microsoft.AspNetCore.Http.HttpResults.Conflict<TValue>!
-static Microsoft.AspNetCore.Http.TypedResults.Content(string! content, Microsoft.Net.Http.Headers.MediaTypeHeaderValue! contentType) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult!
-static Microsoft.AspNetCore.Http.TypedResults.Content(string! content, string? contentType = null, System.Text.Encoding? contentEncoding = null) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult!
+static Microsoft.AspNetCore.Http.TypedResults.Content(string? content, Microsoft.Net.Http.Headers.MediaTypeHeaderValue! contentType) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult!
+static Microsoft.AspNetCore.Http.TypedResults.Content(string? content, string? contentType = null, System.Text.Encoding? contentEncoding = null) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult!
 static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri! uri) -> Microsoft.AspNetCore.Http.HttpResults.Created!
 static Microsoft.AspNetCore.Http.TypedResults.Created(string! uri) -> Microsoft.AspNetCore.Http.HttpResults.Created!
 static Microsoft.AspNetCore.Http.TypedResults.Created<TValue>(System.Uri! uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created<TValue>!
@@ -264,9 +242,31 @@ static Microsoft.AspNetCore.Http.TypedResults.StatusCode(int statusCode) -> Micr
 static Microsoft.AspNetCore.Http.TypedResults.Stream(System.Func<System.IO.Stream!, System.Threading.Tasks.Task!>! streamWriterCallback, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null) -> Microsoft.AspNetCore.Http.HttpResults.PushStreamHttpResult!
 static Microsoft.AspNetCore.Http.TypedResults.Stream(System.IO.Pipelines.PipeReader! pipeReader, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null, bool enableRangeProcessing = false) -> Microsoft.AspNetCore.Http.HttpResults.FileStreamHttpResult!
 static Microsoft.AspNetCore.Http.TypedResults.Stream(System.IO.Stream! stream, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null, bool enableRangeProcessing = false) -> Microsoft.AspNetCore.Http.HttpResults.FileStreamHttpResult!
-static Microsoft.AspNetCore.Http.TypedResults.Text(string! content, string? contentType = null, System.Text.Encoding? contentEncoding = null) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult!
+static Microsoft.AspNetCore.Http.TypedResults.Text(string? content, string? contentType = null, System.Text.Encoding? contentEncoding = null) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult!
 static Microsoft.AspNetCore.Http.TypedResults.Unauthorized() -> Microsoft.AspNetCore.Http.HttpResults.UnauthorizedHttpResult!
 static Microsoft.AspNetCore.Http.TypedResults.UnprocessableEntity() -> Microsoft.AspNetCore.Http.HttpResults.UnprocessableEntity!
 static Microsoft.AspNetCore.Http.TypedResults.UnprocessableEntity<TValue>(TValue? error) -> Microsoft.AspNetCore.Http.HttpResults.UnprocessableEntity<TValue>!
 static Microsoft.AspNetCore.Http.TypedResults.ValidationProblem(System.Collections.Generic.IDictionary<string!, string![]!>! errors, string? detail = null, string? instance = null, string? title = null, string? type = null, System.Collections.Generic.IDictionary<string!, object?>? extensions = null) -> Microsoft.AspNetCore.Http.HttpResults.ValidationProblem!
 static Microsoft.AspNetCore.Http.TypedResults.VirtualFile(string! path, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null, bool enableRangeProcessing = false) -> Microsoft.AspNetCore.Http.HttpResults.VirtualFileHttpResult!
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext httpContext) -> System.Threading.Tasks.Task
+~Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>.Result.get -> Microsoft.AspNetCore.Http.IResult
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>(TResult3 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>(TResult4 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>(TResult5 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>(TResult6 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>(TResult3 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>(TResult4 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>(TResult5 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4, TResult5>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>(TResult3 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>(TResult4 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3, TResult4>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>(TResult3 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2, TResult3>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>(TResult1 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>
+~static Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>.implicit operator Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>(TResult2 result) -> Microsoft.AspNetCore.Http.HttpResults.Results<TResult1, TResult2>
diff --git a/src/Http/Http.Results/src/PushStreamHttpResult.cs b/src/Http/Http.Results/src/PushStreamHttpResult.cs
index e7d3e852788..b6e8d5eaa87 100644
--- a/src/Http/Http.Results/src/PushStreamHttpResult.cs
+++ b/src/Http/Http.Results/src/PushStreamHttpResult.cs
@@ -100,6 +100,8 @@ public sealed class PushStreamHttpResult : IResult
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.PushStreamResult");
diff --git a/src/Http/Http.Results/src/RedirectHttpResult.cs b/src/Http/Http.Results/src/RedirectHttpResult.cs
index e466cef62dc..d1ca73d1dde 100644
--- a/src/Http/Http.Results/src/RedirectHttpResult.cs
+++ b/src/Http/Http.Results/src/RedirectHttpResult.cs
@@ -58,16 +58,6 @@ public sealed partial class RedirectHttpResult : IResult
     /// and will throw an exception when the supplied URL is not considered local.</param>
     internal RedirectHttpResult(string url, bool acceptLocalUrlOnly, bool permanent, bool preserveMethod)
     {
-        if (url == null)
-        {
-            throw new ArgumentNullException(nameof(url));
-        }
-
-        if (string.IsNullOrEmpty(url))
-        {
-            throw new ArgumentException("Argument cannot be null or empty", nameof(url));
-        }
-
         Url = url;
         Permanent = permanent;
         PreserveMethod = preserveMethod;
@@ -97,6 +87,8 @@ public sealed partial class RedirectHttpResult : IResult
     /// <inheritdoc />
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.RedirectResult");
diff --git a/src/Http/Http.Results/src/RedirectToRouteHttpResult.cs b/src/Http/Http.Results/src/RedirectToRouteHttpResult.cs
index a846f56dd3c..0daa608bc58 100644
--- a/src/Http/Http.Results/src/RedirectToRouteHttpResult.cs
+++ b/src/Http/Http.Results/src/RedirectToRouteHttpResult.cs
@@ -53,40 +53,6 @@ public sealed partial class RedirectToRouteHttpResult : IResult
     {
     }
 
-    /// <summary>
-    /// Initializes a new instance of the <see cref="RedirectToRouteHttpResult"/> with the values
-    /// provided.
-    /// </summary>
-    /// <param name="routeName">The name of the route.</param>
-    /// <param name="routeValues">The parameters for the route.</param>
-    /// <param name="permanent">If set to true, makes the redirect permanent (301).
-    /// Otherwise a temporary redirect is used (302).</param>
-    /// <param name="preserveMethod">If set to true, make the temporary redirect (307)
-    /// or permanent redirect (308) preserve the initial request method.</param>
-    internal RedirectToRouteHttpResult(
-        string? routeName,
-        object? routeValues,
-        bool permanent,
-        bool preserveMethod)
-        : this(routeName, routeValues, permanent, preserveMethod, fragment: null)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="RedirectToRouteHttpResult"/> with the values
-    /// provided.
-    /// </summary>
-    /// <param name="routeName">The name of the route.</param>
-    /// <param name="routeValues">The parameters for the route.</param>
-    /// <param name="fragment">The fragment to add to the URL.</param>
-    internal RedirectToRouteHttpResult(
-        string? routeName,
-        object? routeValues,
-        string? fragment)
-        : this(routeName, routeValues, permanent: false, fragment: fragment)
-    {
-    }
-
     /// <summary>
     /// Initializes a new instance of the <see cref="RedirectToRouteHttpResult"/> with the values
     /// provided.
@@ -158,6 +124,8 @@ public sealed partial class RedirectToRouteHttpResult : IResult
     /// <inheritdoc />
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var linkGenerator = httpContext.RequestServices.GetRequiredService<LinkGenerator>();
 
         var destinationUrl = linkGenerator.GetUriByRouteValues(
diff --git a/src/Http/Http.Results/src/ResultsOfT.cs b/src/Http/Http.Results/src/ResultsOfT.Generated.cs
similarity index 96%
rename from src/Http/Http.Results/src/ResultsOfT.cs
rename to src/Http/Http.Results/src/ResultsOfT.Generated.cs
index 33559b6c6e9..921ca0bde1f 100644
--- a/src/Http/Http.Results/src/ResultsOfT.cs
+++ b/src/Http/Http.Results/src/ResultsOfT.Generated.cs
@@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Http.HttpResults;
 /// <remarks>
 /// An instance of this type cannot be created explicitly. Use the implicit cast operators to create an instance
 /// from an instance of one of the declared type arguments, e.g.
-/// <code>Results&lt;OkObjectHttpResult, ProblemHttpResult&gt; result = Results.Ok();</code>
+/// <code>Results&lt;Ok, BadRequest&gt; result = TypedResults.Ok();</code>
 /// </remarks>
 /// <typeparam name="TResult1">The first result type.</typeparam>
 /// <typeparam name="TResult2">The second result type.</typeparam>
@@ -61,6 +61,8 @@ public sealed class Results<TResult1, TResult2> : IResult, IEndpointMetadataProv
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult1>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult2>(context);
     }
@@ -73,7 +75,7 @@ public sealed class Results<TResult1, TResult2> : IResult, IEndpointMetadataProv
 /// <remarks>
 /// An instance of this type cannot be created explicitly. Use the implicit cast operators to create an instance
 /// from an instance of one of the declared type arguments, e.g.
-/// <code>Results&lt;OkObjectHttpResult, ProblemHttpResult&gt; result = Results.Ok();</code>
+/// <code>Results&lt;Ok, BadRequest&gt; result = TypedResults.Ok();</code>
 /// </remarks>
 /// <typeparam name="TResult1">The first result type.</typeparam>
 /// <typeparam name="TResult2">The second result type.</typeparam>
@@ -128,6 +130,8 @@ public sealed class Results<TResult1, TResult2, TResult3> : IResult, IEndpointMe
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult1>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult2>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult3>(context);
@@ -141,7 +145,7 @@ public sealed class Results<TResult1, TResult2, TResult3> : IResult, IEndpointMe
 /// <remarks>
 /// An instance of this type cannot be created explicitly. Use the implicit cast operators to create an instance
 /// from an instance of one of the declared type arguments, e.g.
-/// <code>Results&lt;OkObjectHttpResult, ProblemHttpResult&gt; result = Results.Ok();</code>
+/// <code>Results&lt;Ok, BadRequest&gt; result = TypedResults.Ok();</code>
 /// </remarks>
 /// <typeparam name="TResult1">The first result type.</typeparam>
 /// <typeparam name="TResult2">The second result type.</typeparam>
@@ -204,6 +208,8 @@ public sealed class Results<TResult1, TResult2, TResult3, TResult4> : IResult, I
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult1>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult2>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult3>(context);
@@ -218,7 +224,7 @@ public sealed class Results<TResult1, TResult2, TResult3, TResult4> : IResult, I
 /// <remarks>
 /// An instance of this type cannot be created explicitly. Use the implicit cast operators to create an instance
 /// from an instance of one of the declared type arguments, e.g.
-/// <code>Results&lt;OkObjectHttpResult, ProblemHttpResult&gt; result = Results.Ok();</code>
+/// <code>Results&lt;Ok, BadRequest&gt; result = TypedResults.Ok();</code>
 /// </remarks>
 /// <typeparam name="TResult1">The first result type.</typeparam>
 /// <typeparam name="TResult2">The second result type.</typeparam>
@@ -289,6 +295,8 @@ public sealed class Results<TResult1, TResult2, TResult3, TResult4, TResult5> :
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult1>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult2>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult3>(context);
@@ -304,7 +312,7 @@ public sealed class Results<TResult1, TResult2, TResult3, TResult4, TResult5> :
 /// <remarks>
 /// An instance of this type cannot be created explicitly. Use the implicit cast operators to create an instance
 /// from an instance of one of the declared type arguments, e.g.
-/// <code>Results&lt;OkObjectHttpResult, ProblemHttpResult&gt; result = Results.Ok();</code>
+/// <code>Results&lt;Ok, BadRequest&gt; result = TypedResults.Ok();</code>
 /// </remarks>
 /// <typeparam name="TResult1">The first result type.</typeparam>
 /// <typeparam name="TResult2">The second result type.</typeparam>
@@ -383,6 +391,8 @@ public sealed class Results<TResult1, TResult2, TResult3, TResult4, TResult5, TR
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult1>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult2>(context);
         ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult3>(context);
diff --git a/src/Http/Http.Results/src/SignInHttpResult.cs b/src/Http/Http.Results/src/SignInHttpResult.cs
index 8ce3b727673..72e5dd44ad4 100644
--- a/src/Http/Http.Results/src/SignInHttpResult.cs
+++ b/src/Http/Http.Results/src/SignInHttpResult.cs
@@ -32,7 +32,7 @@ public sealed partial class SignInHttpResult : IResult
     /// <param name="properties"><see cref="AuthenticationProperties"/> used to perform the sign-in operation.</param>
     internal SignInHttpResult(ClaimsPrincipal principal, string? authenticationScheme, AuthenticationProperties? properties)
     {
-        Principal = principal ?? throw new ArgumentNullException(nameof(principal));
+        Principal = principal;
         AuthenticationScheme = authenticationScheme;
         Properties = properties;
     }
@@ -55,6 +55,8 @@ public sealed partial class SignInHttpResult : IResult
     /// <inheritdoc />
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.SignInResult");
diff --git a/src/Http/Http.Results/src/SignOutHttpResult.cs b/src/Http/Http.Results/src/SignOutHttpResult.cs
index 515fb89e418..74044c003a7 100644
--- a/src/Http/Http.Results/src/SignOutHttpResult.cs
+++ b/src/Http/Http.Results/src/SignOutHttpResult.cs
@@ -21,26 +21,6 @@ public sealed partial class SignOutHttpResult : IResult
     {
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="SignOutHttpResult"/> with the default sign out scheme.
-    /// specified authentication scheme and <paramref name="properties"/>.
-    /// </summary>
-    /// <param name="properties"><see cref="AuthenticationProperties"/> used to perform the sign-out operation.</param>
-    internal SignOutHttpResult(AuthenticationProperties properties)
-        : this(Array.Empty<string>(), properties)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="SignOutHttpResult"/> with the
-    /// specified authentication scheme.
-    /// </summary>
-    /// <param name="authenticationScheme">The authentication scheme to use when signing out the user.</param>
-    internal SignOutHttpResult(string authenticationScheme)
-        : this(new[] { authenticationScheme })
-    {
-    }
-
     /// <summary>
     /// Initializes a new instance of <see cref="SignOutHttpResult"/> with the
     /// specified authentication schemes.
@@ -92,6 +72,8 @@ public sealed partial class SignOutHttpResult : IResult
     /// <inheritdoc />
     public async Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.SignOutResult");
diff --git a/src/Http/Http.Results/src/StatusCodeHttpResult.cs b/src/Http/Http.Results/src/StatusCodeHttpResult.cs
index ad951df8beb..662e0fd6923 100644
--- a/src/Http/Http.Results/src/StatusCodeHttpResult.cs
+++ b/src/Http/Http.Results/src/StatusCodeHttpResult.cs
@@ -1,11 +1,11 @@
 // Licensed to the .NET Foundation under one or more agreements.
 // The .NET Foundation licenses this file to you under the MIT license.
 
-namespace Microsoft.AspNetCore.Http.HttpResults;
-
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 
+namespace Microsoft.AspNetCore.Http.HttpResults;
+
 /// <summary>
 /// Represents an <see cref="IResult"/> that when executed will
 /// produce an HTTP response with the given response status code.
@@ -34,6 +34,8 @@ public sealed partial class StatusCodeHttpResult : IResult
     /// <returns>A task that represents the asynchronous execute operation.</returns>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.StatusCodeResult");
diff --git a/src/Http/Http.Results/src/TypedResults.cs b/src/Http/Http.Results/src/TypedResults.cs
index 938400a4169..8b21ea1cdfb 100644
--- a/src/Http/Http.Results/src/TypedResults.cs
+++ b/src/Http/Http.Results/src/TypedResults.cs
@@ -64,7 +64,11 @@ public static class TypedResults
         ClaimsPrincipal principal,
         AuthenticationProperties? properties = null,
         string? authenticationScheme = null)
-        => new(principal, authenticationScheme, properties);
+    {
+        ArgumentNullException.ThrowIfNull(principal);
+
+        return new(principal, authenticationScheme, properties);
+    }
 
     /// <summary>
     /// Creates a <see cref="SignOutHttpResult"/> that on execution invokes <see cref="AuthenticationHttpContextExtensions.SignOutAsync(HttpContext, string?, AuthenticationProperties?)" />.
@@ -89,7 +93,7 @@ public static class TypedResults
     /// <param name="contentType">The content type (MIME type).</param>
     /// <param name="contentEncoding">The content encoding.</param>
     /// <returns>The created <see cref="ContentHttpResult"/> object for the response.</returns>
-    public static ContentHttpResult Content(string content, string? contentType = null, Encoding? contentEncoding = null)
+    public static ContentHttpResult Content(string? content, string? contentType = null, Encoding? contentEncoding = null)
         => Text(content, contentType, contentEncoding);
 
     /// <summary>
@@ -106,7 +110,7 @@ public static class TypedResults
     /// <param name="contentType">The content type (MIME type).</param>
     /// <param name="contentEncoding">The content encoding.</param>
     /// <returns>The created <see cref="ContentHttpResult"/> object for the response.</returns>
-    public static ContentHttpResult Text(string content, string? contentType = null, Encoding? contentEncoding = null)
+    public static ContentHttpResult Text(string? content, string? contentType = null, Encoding? contentEncoding = null)
     {
         MediaTypeHeaderValue? mediaTypeHeaderValue = null;
         if (contentType is not null)
@@ -124,7 +128,7 @@ public static class TypedResults
     /// <param name="content">The content to write to the response.</param>
     /// <param name="contentType">The content type (MIME type).</param>
     /// <returns>The created <see cref="ContentHttpResult"/> object for the response.</returns>
-    public static ContentHttpResult Content(string content, MediaTypeHeaderValue contentType)
+    public static ContentHttpResult Content(string? content, MediaTypeHeaderValue contentType)
         => new(content, contentType.ToString());
 
     /// <summary>
@@ -170,13 +174,17 @@ public static class TypedResults
         bool enableRangeProcessing = false,
         DateTimeOffset? lastModified = null,
         EntityTagHeaderValue? entityTag = null)
-        => new(fileContents, contentType)
+    {
+        ArgumentNullException.ThrowIfNull(fileContents);
+
+        return new(fileContents, contentType)
         {
             FileDownloadName = fileDownloadName,
             EnableRangeProcessing = enableRangeProcessing,
             LastModified = lastModified,
             EntityTag = entityTag,
         };
+    }
 
     /// <summary>
     /// Writes the byte-array content to the response.
@@ -203,13 +211,17 @@ public static class TypedResults
         bool enableRangeProcessing = false,
         DateTimeOffset? lastModified = null,
         EntityTagHeaderValue? entityTag = null)
-        => new(contents, contentType)
+    {
+        ArgumentNullException.ThrowIfNull(contents);
+
+        return new(contents, contentType)
         {
             FileDownloadName = fileDownloadName,
             EnableRangeProcessing = enableRangeProcessing,
             LastModified = lastModified,
             EntityTag = entityTag,
         };
+    }
 
     /// <summary>
     /// Writes the byte-array content to the response.
@@ -274,6 +286,8 @@ public static class TypedResults
         EntityTagHeaderValue? entityTag = null,
         bool enableRangeProcessing = false)
     {
+        ArgumentNullException.ThrowIfNull(fileStream);
+
         return new(fileStream, contentType)
         {
             LastModified = lastModified,
@@ -315,6 +329,8 @@ public static class TypedResults
         EntityTagHeaderValue? entityTag = null,
         bool enableRangeProcessing = false)
     {
+        ArgumentNullException.ThrowIfNull(stream);
+
         return new(stream, contentType)
         {
             LastModified = lastModified,
@@ -353,6 +369,8 @@ public static class TypedResults
         EntityTagHeaderValue? entityTag = null,
         bool enableRangeProcessing = false)
     {
+        ArgumentNullException.ThrowIfNull(pipeReader);
+
         return new(pipeReader.AsStream(), contentType)
         {
             LastModified = lastModified,
@@ -386,6 +404,8 @@ public static class TypedResults
         DateTimeOffset? lastModified = null,
         EntityTagHeaderValue? entityTag = null)
     {
+        ArgumentNullException.ThrowIfNull(streamWriterCallback);
+
         return new(streamWriterCallback, contentType)
         {
             LastModified = lastModified,
@@ -418,6 +438,11 @@ public static class TypedResults
         EntityTagHeaderValue? entityTag = null,
         bool enableRangeProcessing = false)
     {
+        if (string.IsNullOrEmpty(path))
+        {
+            throw new ArgumentException("Argument cannot be null or empty", nameof(path));
+        }
+
         return new(path, contentType)
         {
             FileDownloadName = fileDownloadName,
@@ -451,6 +476,11 @@ public static class TypedResults
         EntityTagHeaderValue? entityTag = null,
         bool enableRangeProcessing = false)
     {
+        if (string.IsNullOrEmpty(path))
+        {
+            throw new ArgumentException("Argument cannot be null or empty", nameof(path));
+        }
+
         return new(path, contentType)
         {
             FileDownloadName = fileDownloadName,
@@ -474,7 +504,14 @@ public static class TypedResults
     /// <param name="preserveMethod">If set to true, make the temporary redirect (307) or permanent redirect (308) preserve the initial request method.</param>
     /// <returns>The created <see cref="RedirectHttpResult"/> for the response.</returns>
     public static RedirectHttpResult Redirect(string url, bool permanent = false, bool preserveMethod = false)
-        => new(url, permanent, preserveMethod);
+    {
+        if (string.IsNullOrEmpty(url))
+        {
+            throw new ArgumentException("Argument cannot be null or empty", nameof(url));
+        }
+
+        return new(url, permanent, preserveMethod);
+    }
 
     /// <summary>
     /// Redirects to the specified <paramref name="localUrl"/>.
@@ -490,7 +527,14 @@ public static class TypedResults
     /// <param name="preserveMethod">If set to true, make the temporary redirect (307) or permanent redirect (308) preserve the initial request method.</param>
     /// <returns>The created <see cref="RedirectHttpResult"/> for the response.</returns>
     public static RedirectHttpResult LocalRedirect(string localUrl, bool permanent = false, bool preserveMethod = false)
-        => new(localUrl, acceptLocalUrlOnly: true, permanent, preserveMethod);
+    {
+        if (string.IsNullOrEmpty(localUrl))
+        {
+            throw new ArgumentException("Argument cannot be null or empty", nameof(localUrl));
+        }
+
+        return new(localUrl, acceptLocalUrlOnly: true, permanent, preserveMethod);
+    }
 
     /// <summary>
     /// Redirects to the specified route.
@@ -650,6 +694,8 @@ public static class TypedResults
     /// <returns>The created <see cref="ProblemHttpResult"/> for the response.</returns>
     public static ProblemHttpResult Problem(ProblemDetails problemDetails)
     {
+        ArgumentNullException.ThrowIfNull(problemDetails);
+
         return new(problemDetails);
     }
 
@@ -671,6 +717,8 @@ public static class TypedResults
         string? type = null,
         IDictionary<string, object?>? extensions = null)
     {
+        ArgumentNullException.ThrowIfNull(errors);
+
         var problemDetails = new HttpValidationProblemDetails(errors)
         {
             Detail = detail,
@@ -698,9 +746,9 @@ public static class TypedResults
     /// <returns>The created <see cref="HttpResults.Created"/> for the response.</returns>
     public static Created Created(string uri)
     {
-        if (uri == null)
+        if (string.IsNullOrEmpty(uri))
         {
-            throw new ArgumentNullException(nameof(uri));
+            throw new ArgumentException("Argument cannot be null or empty", nameof(uri));
         }
 
         return new(uri);
@@ -715,9 +763,9 @@ public static class TypedResults
     /// <returns>The created <see cref="HttpResults.Created{TValue}"/> for the response.</returns>
     public static Created<TValue> Created<TValue>(string uri, TValue? value)
     {
-        if (uri == null)
+        if (string.IsNullOrEmpty(uri))
         {
-            throw new ArgumentNullException(nameof(uri));
+            throw new ArgumentException("Argument cannot be null or empty", nameof(uri));
         }
 
         return new(uri, value);
@@ -730,10 +778,7 @@ public static class TypedResults
     /// <returns>The created <see cref="HttpResults.Created"/> for the response.</returns>
     public static Created Created(Uri uri)
     {
-        if (uri == null)
-        {
-            throw new ArgumentNullException(nameof(uri));
-        }
+        ArgumentNullException.ThrowIfNull(uri);
 
         return new(uri);
     }
@@ -747,10 +792,7 @@ public static class TypedResults
     /// <returns>The created <see cref="HttpResults.Created{TValue}"/> for the response.</returns>
     public static Created<TValue> Created<TValue>(Uri uri, TValue? value)
     {
-        if (uri == null)
-        {
-            throw new ArgumentNullException(nameof(uri));
-        }
+        ArgumentNullException.ThrowIfNull(uri);
 
         return new(uri, value);
     }
@@ -804,10 +846,7 @@ public static class TypedResults
     /// <returns>The created <see cref="HttpResults.Accepted"/> for the response.</returns>
     public static Accepted Accepted(Uri uri)
     {
-        if (uri == null)
-        {
-            throw new ArgumentNullException(nameof(uri));
-        }
+        ArgumentNullException.ThrowIfNull(uri);
 
         return new(uri);
     }
@@ -821,10 +860,7 @@ public static class TypedResults
     /// <returns>The created <see cref="HttpResults.Accepted{TValue}"/> for the response.</returns>
     public static Accepted<TValue> Accepted<TValue>(Uri uri, TValue? value)
     {
-        if (uri == null)
-        {
-            throw new ArgumentNullException(nameof(uri));
-        }
+        ArgumentNullException.ThrowIfNull(uri);
 
         return new(uri, value);
     }
diff --git a/src/Http/Http.Results/src/UnauthorizedHttpResult.cs b/src/Http/Http.Results/src/UnauthorizedHttpResult.cs
index e6dfaec3d86..5662c3fde02 100644
--- a/src/Http/Http.Results/src/UnauthorizedHttpResult.cs
+++ b/src/Http/Http.Results/src/UnauthorizedHttpResult.cs
@@ -27,6 +27,8 @@ public sealed class UnauthorizedHttpResult : IResult
     /// <inheritdoc />
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.UnauthorizedResult");
diff --git a/src/Http/Http.Results/src/UnprocessableEntity.cs b/src/Http/Http.Results/src/UnprocessableEntity.cs
index eaa851ae1c0..1b5bb29a5fc 100644
--- a/src/Http/Http.Results/src/UnprocessableEntity.cs
+++ b/src/Http/Http.Results/src/UnprocessableEntity.cs
@@ -29,6 +29,8 @@ public sealed class UnprocessableEntity : IResult, IEndpointMetadataProvider
     /// <inheritdoc />
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.UnprocessableEntityObjectResult");
@@ -42,6 +44,8 @@ public sealed class UnprocessableEntity : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status422UnprocessableEntity));
     }
 }
diff --git a/src/Http/Http.Results/src/UnprocessableEntityOfT.cs b/src/Http/Http.Results/src/UnprocessableEntityOfT.cs
index 3232114b569..7653bc1c0d4 100644
--- a/src/Http/Http.Results/src/UnprocessableEntityOfT.cs
+++ b/src/Http/Http.Results/src/UnprocessableEntityOfT.cs
@@ -38,6 +38,8 @@ public sealed class UnprocessableEntity<TValue> : IResult, IEndpointMetadataProv
     /// <inheritdoc />
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         // Creating the logger with a string to preserve the category after the refactoring.
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Result.UnprocessableEntityObjectResult");
@@ -54,6 +56,8 @@ public sealed class UnprocessableEntity<TValue> : IResult, IEndpointMetadataProv
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(TValue), StatusCodes.Status422UnprocessableEntity, "application/json"));
     }
 }
diff --git a/src/Http/Http.Results/src/ValidationProblem.cs b/src/Http/Http.Results/src/ValidationProblem.cs
index 9812ec9ce0d..4c5206c4b88 100644
--- a/src/Http/Http.Results/src/ValidationProblem.cs
+++ b/src/Http/Http.Results/src/ValidationProblem.cs
@@ -43,6 +43,8 @@ public sealed class ValidationProblem : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var loggerFactory = httpContext.RequestServices.GetRequiredService<ILoggerFactory>();
         var logger = loggerFactory.CreateLogger(typeof(ValidationProblem));
 
@@ -59,6 +61,8 @@ public sealed class ValidationProblem : IResult, IEndpointMetadataProvider
     /// <inheritdoc/>
     static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)
     {
+        ArgumentNullException.ThrowIfNull(context);
+
         context.EndpointMetadata.Add(new ProducesResponseTypeMetadata(typeof(HttpValidationProblemDetails), StatusCodes.Status400BadRequest, "application/problem+json"));
     }
 }
diff --git a/src/Http/Http.Results/src/VirtualFileHttpResult.cs b/src/Http/Http.Results/src/VirtualFileHttpResult.cs
index 6739676d970..56bec2e6e2f 100644
--- a/src/Http/Http.Results/src/VirtualFileHttpResult.cs
+++ b/src/Http/Http.Results/src/VirtualFileHttpResult.cs
@@ -62,7 +62,7 @@ public sealed class VirtualFileHttpResult : IResult
         DateTimeOffset? lastModified = null,
         EntityTagHeaderValue? entityTag = null)
     {
-        FileName = fileName ?? throw new ArgumentNullException(nameof(fileName));
+        FileName = fileName;
         ContentType = contentType ?? "application/octet-stream";
         FileDownloadName = fileDownloadName;
         EnableRangeProcessing = enableRangeProcessing;
@@ -101,6 +101,8 @@ public sealed class VirtualFileHttpResult : IResult
     /// <inheritdoc/>
     public Task ExecuteAsync(HttpContext httpContext)
     {
+        ArgumentNullException.ThrowIfNull(httpContext);
+
         var hostingEnvironment = httpContext.RequestServices.GetRequiredService<IWebHostEnvironment>();
 
         var fileInfo = GetFileInformation(hostingEnvironment.WebRootFileProvider);
diff --git a/src/Http/Http.Results/test/AcceptedAtRouteOfTResultTests.cs b/src/Http/Http.Results/test/AcceptedAtRouteOfTResultTests.cs
index 45fb26fd95f..bd03a6e3f2f 100644
--- a/src/Http/Http.Results/test/AcceptedAtRouteOfTResultTests.cs
+++ b/src/Http/Http.Results/test/AcceptedAtRouteOfTResultTests.cs
@@ -134,6 +134,24 @@ public class AcceptedAtRouteOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new AcceptedAtRoute<object>(null, null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<AcceptedAtRoute<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/AcceptedAtRouteResultTests.cs b/src/Http/Http.Results/test/AcceptedAtRouteResultTests.cs
index 4c43df6dfb7..c8d663b5254 100644
--- a/src/Http/Http.Results/test/AcceptedAtRouteResultTests.cs
+++ b/src/Http/Http.Results/test/AcceptedAtRouteResultTests.cs
@@ -85,6 +85,24 @@ public class AcceptedAtRouteResultTests
         Assert.Equal(StatusCodes.Status202Accepted, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new AcceptedAtRoute(null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<AcceptedAtRoute>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/AcceptedOfTResultTests.cs b/src/Http/Http.Results/test/AcceptedOfTResultTests.cs
index 3bc477cffad..4a9193ed1ee 100644
--- a/src/Http/Http.Results/test/AcceptedOfTResultTests.cs
+++ b/src/Http/Http.Results/test/AcceptedOfTResultTests.cs
@@ -74,6 +74,24 @@ public class AcceptedOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new Accepted<object>("location", null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Accepted<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/AcceptedResultTests.cs b/src/Http/Http.Results/test/AcceptedResultTests.cs
index a8fad797f1e..4c762562a61 100644
--- a/src/Http/Http.Results/test/AcceptedResultTests.cs
+++ b/src/Http/Http.Results/test/AcceptedResultTests.cs
@@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Http.HttpResults;
 public class AcceptedResultTests
 {
     [Fact]
-    public async Task ExecuteResultAsync_SetsStatusCodeAndLocationHeader()
+    public async Task ExecuteAsync_SetsStatusCodeAndLocationHeader()
     {
         // Arrange
         var expectedUrl = "testAction";
@@ -41,6 +41,24 @@ public class AcceptedResultTests
         Assert.Contains(context.EndpointMetadata, m => m is ProducesResponseTypeMetadata { StatusCode: StatusCodes.Status202Accepted });
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new Accepted("location");
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Accepted>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/BadRequestOfTResultTests.cs b/src/Http/Http.Results/test/BadRequestOfTResultTests.cs
index 8d223c3b468..f5ad69cfdcb 100644
--- a/src/Http/Http.Results/test/BadRequestOfTResultTests.cs
+++ b/src/Http/Http.Results/test/BadRequestOfTResultTests.cs
@@ -116,6 +116,24 @@ public class BadRequestOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new BadRequest<object>(null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<BadRequest<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/BadRequestResultTests.cs b/src/Http/Http.Results/test/BadRequestResultTests.cs
index 30286b384bc..587e503b389 100644
--- a/src/Http/Http.Results/test/BadRequestResultTests.cs
+++ b/src/Http/Http.Results/test/BadRequestResultTests.cs
@@ -55,6 +55,24 @@ public class BadRequestResultTests
         Assert.Equal(StatusCodes.Status400BadRequest, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new BadRequest();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<BadRequest>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/ChallengeResultTests.cs b/src/Http/Http.Results/test/ChallengeResultTests.cs
index a5d02031d54..28ae90c0134 100644
--- a/src/Http/Http.Results/test/ChallengeResultTests.cs
+++ b/src/Http/Http.Results/test/ChallengeResultTests.cs
@@ -41,6 +41,17 @@ public class ChallengeResultTests
         auth.Verify(c => c.ChallengeAsync(httpContext, null, null), Times.Exactly(1));
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new ChallengeHttpResult();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static DefaultHttpContext GetHttpContext(Mock<IAuthenticationService> auth)
     {
         var httpContext = new DefaultHttpContext();
diff --git a/src/Http/Http.Results/test/ConflictOfTResultTests.cs b/src/Http/Http.Results/test/ConflictOfTResultTests.cs
index 9ecf5b06dcb..8d54e526fe8 100644
--- a/src/Http/Http.Results/test/ConflictOfTResultTests.cs
+++ b/src/Http/Http.Results/test/ConflictOfTResultTests.cs
@@ -95,6 +95,24 @@ public class ConflictOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new Conflict<object>(null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Conflict<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/ConflictResultTests.cs b/src/Http/Http.Results/test/ConflictResultTests.cs
index 45337e675be..e709d7a9f87 100644
--- a/src/Http/Http.Results/test/ConflictResultTests.cs
+++ b/src/Http/Http.Results/test/ConflictResultTests.cs
@@ -56,6 +56,24 @@ public class ConflictResultTests
         Assert.Equal(StatusCodes.Status409Conflict, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new Conflict();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Conflict>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/ContentResultTests.cs b/src/Http/Http.Results/test/ContentResultTests.cs
index 7b316c41098..7f22daa0785 100644
--- a/src/Http/Http.Results/test/ContentResultTests.cs
+++ b/src/Http/Http.Results/test/ContentResultTests.cs
@@ -123,6 +123,17 @@ public class ContentResultTests
         Assert.Equal(expectedContentData.Length, httpContext.Response.ContentLength);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new ContentHttpResult("content", null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static IServiceCollection CreateServices()
     {
         var services = new ServiceCollection();
diff --git a/src/Http/Http.Results/test/CreatedAtRouteOfTResultTests.cs b/src/Http/Http.Results/test/CreatedAtRouteOfTResultTests.cs
index afa6c0cfb4d..9579f00e042 100644
--- a/src/Http/Http.Results/test/CreatedAtRouteOfTResultTests.cs
+++ b/src/Http/Http.Results/test/CreatedAtRouteOfTResultTests.cs
@@ -101,6 +101,24 @@ public partial class CreatedAtRouteOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new CreatedAtRoute<object>(null, null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<CreatedAtRoute<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/CreatedAtRouteResultTests.cs b/src/Http/Http.Results/test/CreatedAtRouteResultTests.cs
index bd8f0c2a0fb..04c55274d61 100644
--- a/src/Http/Http.Results/test/CreatedAtRouteResultTests.cs
+++ b/src/Http/Http.Results/test/CreatedAtRouteResultTests.cs
@@ -81,6 +81,24 @@ public partial class CreatedAtRouteResultTests
         Assert.Equal(StatusCodes.Status201Created, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new CreatedAtRoute(null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<CreatedAtRoute>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/CreatedOfTResultTests.cs b/src/Http/Http.Results/test/CreatedOfTResultTests.cs
index f0ac3d838ff..272022a88ef 100644
--- a/src/Http/Http.Results/test/CreatedOfTResultTests.cs
+++ b/src/Http/Http.Results/test/CreatedOfTResultTests.cs
@@ -109,6 +109,24 @@ public class CreatedOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new Created<object>("location", null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Created<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/CreatedResultTests.cs b/src/Http/Http.Results/test/CreatedResultTests.cs
index 0591cd7db00..e4ca455e146 100644
--- a/src/Http/Http.Results/test/CreatedResultTests.cs
+++ b/src/Http/Http.Results/test/CreatedResultTests.cs
@@ -73,6 +73,24 @@ public class CreatedResultTests
         Assert.Equal(StatusCodes.Status201Created, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new Created("location");
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Created>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/EmptyResultTests.cs b/src/Http/Http.Results/test/EmptyResultTests.cs
index cde7fde6497..f974a0211a1 100644
--- a/src/Http/Http.Results/test/EmptyResultTests.cs
+++ b/src/Http/Http.Results/test/EmptyResultTests.cs
@@ -23,6 +23,17 @@ public class EmptyResultTests
         Assert.Equal(0, memoryStream.Length);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = EmptyHttpResult.Instance;
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static HttpContext GetHttpContext()
     {
         var httpContext = new DefaultHttpContext();
diff --git a/src/Http/Http.Results/test/ForbidResultTests.cs b/src/Http/Http.Results/test/ForbidResultTests.cs
index ee58a6539e6..a28e2030452 100644
--- a/src/Http/Http.Results/test/ForbidResultTests.cs
+++ b/src/Http/Http.Results/test/ForbidResultTests.cs
@@ -108,6 +108,17 @@ public class ForbidResultTests
         auth.Verify();
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new ForbidHttpResult();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static DefaultHttpContext GetHttpContext(IAuthenticationService auth)
     {
         var httpContext = new DefaultHttpContext();
diff --git a/src/Http/Http.Results/test/HttpFileStreamResultTests.cs b/src/Http/Http.Results/test/HttpFileStreamResultTests.cs
index 40cbc188ee5..f3c32f6e48b 100644
--- a/src/Http/Http.Results/test/HttpFileStreamResultTests.cs
+++ b/src/Http/Http.Results/test/HttpFileStreamResultTests.cs
@@ -78,4 +78,14 @@ public class HttpFileStreamResultTests : FileStreamResultTestBase
         Assert.Equal(expectedMediaType, result.ContentType);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new FileStreamHttpResult(new MemoryStream(), null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
 }
diff --git a/src/Http/Http.Results/test/JsonResultTests.cs b/src/Http/Http.Results/test/JsonResultTests.cs
index d0804b3ab4d..fbc3f6ece6b 100644
--- a/src/Http/Http.Results/test/JsonResultTests.cs
+++ b/src/Http/Http.Results/test/JsonResultTests.cs
@@ -206,6 +206,17 @@ public class JsonResultTests
         Assert.Equal(StatusCodes.Status413RequestEntityTooLarge, httpContext.Response.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new JsonHttpResult<object>(null, null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static IServiceProvider CreateServices()
     {
         var services = new ServiceCollection();
diff --git a/src/Http/Http.Results/test/Microsoft.AspNetCore.Http.Results.Tests.csproj b/src/Http/Http.Results/test/Microsoft.AspNetCore.Http.Results.Tests.csproj
index e89f3952793..c9d39f858d4 100644
--- a/src/Http/Http.Results/test/Microsoft.AspNetCore.Http.Results.Tests.csproj
+++ b/src/Http/Http.Results/test/Microsoft.AspNetCore.Http.Results.Tests.csproj
@@ -15,7 +15,7 @@
     <Compile Include="$(SharedSourceRoot)ResultsTests\*.cs" LinkBase="Shared" />
     <Content Include="$(HttpResultsSourceRoot)\ResultsCache.StatusCodes.tt" LinkBase="Shared\GeneratedContent" CopyToOutputDirectory="PreserveNewest" />
     <Content Include="$(HttpResultsSourceRoot)\ResultsCache.StatusCodes.cs" LinkBase="Shared\GeneratedContent" CopyToOutputDirectory="PreserveNewest" />
-    <Content Include="$(HttpResultsSourceRoot)\ResultsOfT.cs" LinkBase="Shared\GeneratedContent" CopyToOutputDirectory="PreserveNewest" />
+    <Content Include="$(HttpResultsSourceRoot)\ResultsOfT.Generated.cs" LinkBase="Shared\GeneratedContent" CopyToOutputDirectory="PreserveNewest" />
     <Compile Update="ResultsOfTTests.Generated.cs" Link="Shared\GeneratedContent\%(RecursiveDir)%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
   </ItemGroup>
 
diff --git a/src/Http/Http.Results/test/NoContentResultTests.cs b/src/Http/Http.Results/test/NoContentResultTests.cs
index de0c82a6327..17435be5099 100644
--- a/src/Http/Http.Results/test/NoContentResultTests.cs
+++ b/src/Http/Http.Results/test/NoContentResultTests.cs
@@ -52,6 +52,24 @@ public class NoContentResultTests
         Assert.Equal(StatusCodes.Status204NoContent, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new NoContent();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<NoContent>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/NotFoundOfTResultTests.cs b/src/Http/Http.Results/test/NotFoundOfTResultTests.cs
index 9a15ae0d76c..959c09340c5 100644
--- a/src/Http/Http.Results/test/NotFoundOfTResultTests.cs
+++ b/src/Http/Http.Results/test/NotFoundOfTResultTests.cs
@@ -77,6 +77,24 @@ public class NotFoundOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new NotFound<object>(null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<NotFound<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/NotFoundResultTests.cs b/src/Http/Http.Results/test/NotFoundResultTests.cs
index 20d69a54e48..0e7a2cb70c9 100644
--- a/src/Http/Http.Results/test/NotFoundResultTests.cs
+++ b/src/Http/Http.Results/test/NotFoundResultTests.cs
@@ -51,6 +51,24 @@ public class NotFoundResultTests
         Assert.Equal(StatusCodes.Status404NotFound, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new NotFound();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<NotFound>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/OkOfTResultTests.cs b/src/Http/Http.Results/test/OkOfTResultTests.cs
index 11e1af79a23..bd4d11e1ebe 100644
--- a/src/Http/Http.Results/test/OkOfTResultTests.cs
+++ b/src/Http/Http.Results/test/OkOfTResultTests.cs
@@ -94,6 +94,24 @@ public class OkOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new Ok<object>(null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Ok<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/OkResultTests.cs b/src/Http/Http.Results/test/OkResultTests.cs
index c199a2b0863..da480961e63 100644
--- a/src/Http/Http.Results/test/OkResultTests.cs
+++ b/src/Http/Http.Results/test/OkResultTests.cs
@@ -55,6 +55,24 @@ public class OkResultTests
         Assert.Equal(StatusCodes.Status200OK, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new Ok();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Ok>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/ProblemResultTests.cs b/src/Http/Http.Results/test/ProblemResultTests.cs
index 35bf6ea7ba2..4e6c38a5670 100644
--- a/src/Http/Http.Results/test/ProblemResultTests.cs
+++ b/src/Http/Http.Results/test/ProblemResultTests.cs
@@ -91,6 +91,17 @@ public class ProblemResultTests
         Assert.Equal(StatusCodes.Status413RequestEntityTooLarge, httpContext.Response.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new ProblemHttpResult(new());
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static IServiceProvider CreateServices()
     {
         var services = new ServiceCollection();
diff --git a/src/Http/Http.Results/test/PushStreamResultTests.cs b/src/Http/Http.Results/test/PushStreamResultTests.cs
index 669720f87f4..43541f08094 100644
--- a/src/Http/Http.Results/test/PushStreamResultTests.cs
+++ b/src/Http/Http.Results/test/PushStreamResultTests.cs
@@ -66,4 +66,15 @@ public class PushStreamResultTests
         Assert.Equal(entityTag, result.EntityTag);
         Assert.Equal(expectedMediaType, result.ContentType);
     }
+
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new PushStreamHttpResult(s => Task.CompletedTask, "content-type");
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
 }
diff --git a/src/Http/Http.Results/test/RedirectResultTests.cs b/src/Http/Http.Results/test/RedirectResultTests.cs
index 8690e68a5be..6a41ab6acf6 100644
--- a/src/Http/Http.Results/test/RedirectResultTests.cs
+++ b/src/Http/Http.Results/test/RedirectResultTests.cs
@@ -22,6 +22,17 @@ public class RedirectResultTests : RedirectResultTestBase
         Assert.Same(url, result.Url);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new RedirectHttpResult("url");
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     protected override Task ExecuteAsync(HttpContext httpContext, string contentPath)
     {
         var redirectResult = new RedirectHttpResult(contentPath, false, false);
diff --git a/src/Http/Http.Results/test/RedirectToRouteResultTests.cs b/src/Http/Http.Results/test/RedirectToRouteResultTests.cs
index d7f27a5561d..6df007652eb 100644
--- a/src/Http/Http.Results/test/RedirectToRouteResultTests.cs
+++ b/src/Http/Http.Results/test/RedirectToRouteResultTests.cs
@@ -84,6 +84,17 @@ public class RedirectToRouteResultTests
         Assert.Equal(expectedUrl, httpContext.Response.Headers["Location"]);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new RedirectToRouteHttpResult(null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static HttpContext GetHttpContext(string path)
     {
         var services = CreateServices(path);
diff --git a/src/Http/Http.Results/test/ResultsOfTTests.Generated.cs b/src/Http/Http.Results/test/ResultsOfTTests.Generated.cs
index a17541fa7c2..2588a2e2751 100644
--- a/src/Http/Http.Results/test/ResultsOfTTests.Generated.cs
+++ b/src/Http/Http.Results/test/ResultsOfTTests.Generated.cs
@@ -218,6 +218,13 @@ public partial class ResultsOfTTests
         Assert.Contains(context.EndpointMetadata, m => m is ResultTypeProvidedMetadata { SourceTypeName: nameof(ProvidesMetadataResult2) });
     }
 
+    [Fact]
+    public void ResultsOfTResult1TResult2_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Results<ProvidesMetadataResult1, ProvidesMetadataResult2>>(null));
+    }
+
     [Theory]
     [InlineData(1, typeof(ChecksumResult1))]
     [InlineData(2, typeof(ChecksumResult2))]
@@ -491,6 +498,13 @@ public partial class ResultsOfTTests
         Assert.Contains(context.EndpointMetadata, m => m is ResultTypeProvidedMetadata { SourceTypeName: nameof(ProvidesMetadataResult3) });
     }
 
+    [Fact]
+    public void ResultsOfTResult1TResult2TResult3_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Results<ProvidesMetadataResult1, ProvidesMetadataResult2, ProvidesMetadataResult3>>(null));
+    }
+
     [Theory]
     [InlineData(1, typeof(ChecksumResult1))]
     [InlineData(2, typeof(ChecksumResult2))]
@@ -841,6 +855,13 @@ public partial class ResultsOfTTests
         Assert.Contains(context.EndpointMetadata, m => m is ResultTypeProvidedMetadata { SourceTypeName: nameof(ProvidesMetadataResult4) });
     }
 
+    [Fact]
+    public void ResultsOfTResult1TResult2TResult3TResult4_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Results<ProvidesMetadataResult1, ProvidesMetadataResult2, ProvidesMetadataResult3, ProvidesMetadataResult4>>(null));
+    }
+
     [Theory]
     [InlineData(1, typeof(ChecksumResult1))]
     [InlineData(2, typeof(ChecksumResult2))]
@@ -1276,6 +1297,13 @@ public partial class ResultsOfTTests
         Assert.Contains(context.EndpointMetadata, m => m is ResultTypeProvidedMetadata { SourceTypeName: nameof(ProvidesMetadataResult5) });
     }
 
+    [Fact]
+    public void ResultsOfTResult1TResult2TResult3TResult4TResult5_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Results<ProvidesMetadataResult1, ProvidesMetadataResult2, ProvidesMetadataResult3, ProvidesMetadataResult4, ProvidesMetadataResult5>>(null));
+    }
+
     [Theory]
     [InlineData(1, typeof(ChecksumResult1))]
     [InlineData(2, typeof(ChecksumResult2))]
@@ -1804,6 +1832,13 @@ public partial class ResultsOfTTests
         Assert.Contains(context.EndpointMetadata, m => m is ResultTypeProvidedMetadata { SourceTypeName: nameof(ProvidesMetadataResult6) });
     }
 
+    [Fact]
+    public void ResultsOfTResult1TResult2TResult3TResult4TResult5TResult6_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Results<ProvidesMetadataResult1, ProvidesMetadataResult2, ProvidesMetadataResult3, ProvidesMetadataResult4, ProvidesMetadataResult5, ProvidesMetadataResult6>>(null));
+    }
+
     abstract class ChecksumResult : IResult
     {
         public ChecksumResult(int checksum = 0)
diff --git a/src/Http/Http.Results/test/ResultsOfTTests.cs b/src/Http/Http.Results/test/ResultsOfTTests.cs
index 4cb810d91b5..1fcca5437ce 100644
--- a/src/Http/Http.Results/test/ResultsOfTTests.cs
+++ b/src/Http/Http.Results/test/ResultsOfTTests.cs
@@ -22,7 +22,7 @@ public partial class ResultsOfTTests
     public void GeneratedCodeIsUpToDate()
     {
         // This assumes the output is in the repo artifacts directory
-        var resultsOfTGeneratedPath = Path.Combine(AppContext.BaseDirectory, "Shared", "GeneratedContent", "ResultsOfT.cs");
+        var resultsOfTGeneratedPath = Path.Combine(AppContext.BaseDirectory, "Shared", "GeneratedContent", "ResultsOfT.Generated.cs");
         var testsGeneratedPath = Path.Combine(AppContext.BaseDirectory, "Shared", "GeneratedContent", "ResultsOfTTests.Generated.cs");
 
         var testResultsOfTGeneratedPath = Path.GetTempFileName();
@@ -38,7 +38,7 @@ public partial class ResultsOfTTests
             var testResultsOfTGenerated = File.ReadAllText(testResultsOfTGeneratedPath);
             var testTestsGenerated = File.ReadAllText(testTestsGeneratedPath);
 
-            AssertFileContentEqual(currentResultsOfTGenerated, testResultsOfTGenerated, "ResultsOfT.cs");
+            AssertFileContentEqual(currentResultsOfTGenerated, testResultsOfTGenerated, "ResultsOfT.Generated.cs");
             AssertFileContentEqual(currentTestsGenerated, testTestsGenerated, "ResultsOfTTests.Generated.cs");
         }
         finally
diff --git a/src/Http/Http.Results/test/ResultsTests.cs b/src/Http/Http.Results/test/ResultsTests.cs
index 213163608c0..711bd5ef2c0 100644
--- a/src/Http/Http.Results/test/ResultsTests.cs
+++ b/src/Http/Http.Results/test/ResultsTests.cs
@@ -209,6 +209,42 @@ public class ResultsTests
         new object[] { 2, default(string), default(string), default(bool), default(DateTimeOffset?), default(EntityTagHeaderValue) }
     };
 
+    [Fact]
+    public void Bytes_WithNullContents_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("contents", () => Results.Bytes(null));
+    }
+
+    [Fact]
+    public void File_WithNullContents_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("fileContents", () => Results.File(default(byte[])));
+    }
+
+    [Fact]
+    public void File_WithNullStream_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("fileStream", () => Results.File(default(Stream)));
+    }
+
+    [Fact]
+    public void Stream_WithNullStream_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("stream", () => Results.Stream(default(Stream)));
+    }
+
+    [Fact]
+    public void Stream_WithNullPipeReader_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("pipeReader", () => Results.Stream(default(PipeReader)));
+    }
+
+    [Fact]
+    public void Stream_WithNullCallback_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("streamWriterCallback", () => TypedResults.Stream(default(Func<Stream, Task>)));
+    }
+
     [Theory]
     [MemberData(nameof(ChallengeForbidSignInOut_ResultHasCorrectValues_Data))]
     public void Challenge_ResultHasCorrectValues(AuthenticationProperties properties, IList<string> authenticationSchemes)
@@ -393,9 +429,15 @@ public class ResultsTests
     }
 
     [Fact]
-    public void Created_WithNullStringUri_ThrowsArgNullException()
+    public void Created_WithNullStringUri_ThrowsArgException()
     {
-        Assert.Throws<ArgumentNullException>("uri", () => Results.Created(default(string), null));
+        Assert.Throws<ArgumentException>("uri", () => Results.Created(default(string), null));
+    }
+
+    [Fact]
+    public void Created_WithEmptyStringUri_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("uri", () => Results.Created(string.Empty, null));
     }
 
     [Fact]
@@ -404,6 +446,24 @@ public class ResultsTests
         Assert.Throws<ArgumentNullException>("uri", () => Results.Created(default(Uri), null));
     }
 
+    [Fact]
+    public void Created_WithNullStringUriAndValue_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("uri", () => Results.Created(default(string), new { }));
+    }
+
+    [Fact]
+    public void Created_WithEmptyStringUriAndValue_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("uri", () => Results.Created(string.Empty, new { }));
+    }
+
+    [Fact]
+    public void Created_WithNullUriAndValue_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("uri", () => Results.Created(default(Uri), new { }));
+    }
+
     [Fact]
     public void CreatedAtRoute_WithRouteNameAndRouteValuesAndValue_ResultHasCorrectValues()
     {
@@ -508,6 +568,18 @@ public class ResultsTests
         Assert.Null(result.StatusCode);
     }
 
+    [Fact]
+    public void LocalRedirect_WithNullStringUrl_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("localUrl", () => Results.LocalRedirect(default(string)));
+    }
+
+    [Fact]
+    public void LocalRedirect_WithEmptyStringUrl_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("localUrl", () => Results.LocalRedirect(string.Empty));
+    }
+
     [Fact]
     public void LocalRedirect_WithUrl_ResultHasCorrectValues()
     {
@@ -635,6 +707,12 @@ public class ResultsTests
         Assert.Equal(StatusCodes.Status200OK, result.StatusCode);
     }
 
+    [Fact]
+    public void Problem_WithNullProblem_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("problemDetails", () => Results.Problem(default(ProblemDetails)));
+    }
+
     [Fact]
     public void Problem_WithArgs_ResultHasCorrectValues()
     {
@@ -707,6 +785,12 @@ public class ResultsTests
         Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);
     }
 
+    [Fact]
+    public void ValidationProblem_WithNullErrors_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("errors", () => Results.ValidationProblem(default(IDictionary<string, string[]>)));
+    }
+
     [Fact]
     public void ValidationProblem_WithValidationProblemArg_ResultHasCorrectValues()
     {
@@ -738,6 +822,18 @@ public class ResultsTests
         Assert.Equal(extensions, result.ProblemDetails.Extensions);
     }
 
+    [Fact]
+    public void Redirect_WithNullStringUrl_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("url", () => Results.Redirect(default(string)));
+    }
+
+    [Fact]
+    public void Redirect_WithEmptyStringUrl_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("url", () => Results.Redirect(string.Empty));
+    }
+
     [Fact]
     public void Redirect_WithDefaults_ResultHasCorrectValues()
     {
diff --git a/src/Http/Http.Results/test/SignInResultTests.cs b/src/Http/Http.Results/test/SignInResultTests.cs
index 3d4c4136740..9fe069c41b2 100644
--- a/src/Http/Http.Results/test/SignInResultTests.cs
+++ b/src/Http/Http.Results/test/SignInResultTests.cs
@@ -74,6 +74,17 @@ public class SignInResultTests
         auth.Verify();
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new SignInHttpResult(new());
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static DefaultHttpContext GetHttpContext(IAuthenticationService auth)
     {
         var httpContext = new DefaultHttpContext();
diff --git a/src/Http/Http.Results/test/SignOutResultTests.cs b/src/Http/Http.Results/test/SignOutResultTests.cs
index 386b29e928b..15490131821 100644
--- a/src/Http/Http.Results/test/SignOutResultTests.cs
+++ b/src/Http/Http.Results/test/SignOutResultTests.cs
@@ -73,6 +73,17 @@ public class SignOutResultTests
         auth.Verify();
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new SignOutHttpResult();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static DefaultHttpContext GetHttpContext(IAuthenticationService auth)
     {
         var httpContext = new DefaultHttpContext();
diff --git a/src/Http/Http.Results/test/StatusCodeResultTests.cs b/src/Http/Http.Results/test/StatusCodeResultTests.cs
index 4e28357b5b1..8fc4b54a387 100644
--- a/src/Http/Http.Results/test/StatusCodeResultTests.cs
+++ b/src/Http/Http.Results/test/StatusCodeResultTests.cs
@@ -24,6 +24,17 @@ public class StatusCodeResultTests
         Assert.Equal(StatusCodes.Status404NotFound, httpContext.Response.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new StatusCodeHttpResult(200);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static IServiceCollection CreateServices()
     {
         var services = new ServiceCollection();
diff --git a/src/Http/Http.Results/test/TypedResultsTests.cs b/src/Http/Http.Results/test/TypedResultsTests.cs
index c927bd94234..37e024e8b4f 100644
--- a/src/Http/Http.Results/test/TypedResultsTests.cs
+++ b/src/Http/Http.Results/test/TypedResultsTests.cs
@@ -97,6 +97,12 @@ public class TypedResultsTests
         Assert.Throws<ArgumentNullException>("uri", () => TypedResults.Accepted(default(Uri)));
     }
 
+    [Fact]
+    public void Accepted_WithNullUriAndValue_ThrowsArgumentNullException()
+    {
+        Assert.Throws<ArgumentNullException>("uri", () => TypedResults.Accepted(default(Uri), default(object)));
+    }
+
     [Fact]
     public void AcceptedAtRoute_WithRouteNameAndRouteValuesAndValue_ResultHasCorrectValues()
     {
@@ -198,6 +204,112 @@ public class TypedResultsTests
         new object[] { 1, default(string), default(string), default(bool), default(DateTimeOffset?), default(EntityTagHeaderValue) }
     };
 
+    [Theory]
+    [MemberData(nameof(PhysicalOrVirtualFile_ResultHasCorrectValues_Data))]
+    public void PhysicalFile_ResultHasCorrectValues(string contentType, string fileDownloadName, bool enableRangeProcessing, DateTimeOffset lastModified, EntityTagHeaderValue entityTag)
+    {
+        // Arrange
+        var path = "path";
+
+        // Act
+        var result = TypedResults.PhysicalFile(path, contentType, fileDownloadName, lastModified, entityTag, enableRangeProcessing);
+
+        // Assert
+        Assert.Equal(path, result.FileName);
+        Assert.Equal(contentType ?? "application/octet-stream", result.ContentType);
+        Assert.Equal(fileDownloadName, result.FileDownloadName);
+        Assert.Equal(enableRangeProcessing, result.EnableRangeProcessing);
+        Assert.Equal(lastModified, result.LastModified);
+        Assert.Equal(entityTag, result.EntityTag);
+    }
+
+    [Theory]
+    [MemberData(nameof(PhysicalOrVirtualFile_ResultHasCorrectValues_Data))]
+    public void VirtualFile_ResultHasCorrectValues(string contentType, string fileDownloadName, bool enableRangeProcessing, DateTimeOffset lastModified, EntityTagHeaderValue entityTag)
+    {
+        // Arrange
+        var path = "path";
+
+        // Act
+        var result = TypedResults.VirtualFile(path, contentType, fileDownloadName, lastModified, entityTag, enableRangeProcessing);
+
+        // Assert
+        Assert.Equal(path, result.FileName);
+        Assert.Equal(contentType ?? "application/octet-stream", result.ContentType);
+        Assert.Equal(fileDownloadName, result.FileDownloadName);
+        Assert.Equal(enableRangeProcessing, result.EnableRangeProcessing);
+        Assert.Equal(lastModified, result.LastModified);
+        Assert.Equal(entityTag, result.EntityTag);
+    }
+
+    public static IEnumerable<object[]> PhysicalOrVirtualFile_ResultHasCorrectValues_Data => new List<object[]>
+    {
+        new object[] { "text/plain", "testfile", true, new DateTimeOffset(2022, 1, 1, 0, 0, 1, TimeSpan.FromHours(-8)), EntityTagHeaderValue.Any },
+        new object[] { default(string), default(string), default(bool), default(DateTimeOffset?), default(EntityTagHeaderValue) },
+        new object[] { "text/plain", "testfile", true, new DateTimeOffset(2022, 1, 1, 0, 0, 1, TimeSpan.FromHours(-8)), EntityTagHeaderValue.Any },
+        new object[] { default(string), default(string), default(bool), default(DateTimeOffset?), default(EntityTagHeaderValue) }
+    };
+
+    [Fact]
+    public void Bytes_WithNullContents_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("contents", () => TypedResults.Bytes(null));
+    }
+
+    [Fact]
+    public void File_WithNullContents_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("fileContents", () => TypedResults.File(default(byte[])));
+    }
+
+    [Fact]
+    public void File_WithNullStream_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("fileStream", () => TypedResults.File(default(Stream)));
+    }
+
+    [Fact]
+    public void Stream_WithNullStream_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("stream", () => TypedResults.Stream(default(Stream)));
+    }
+
+    [Fact]
+    public void Stream_WithNullPipeReader_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("pipeReader", () => TypedResults.Stream(default(PipeReader)));
+    }
+
+    [Fact]
+    public void Stream_WithNullCallback_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("streamWriterCallback", () => TypedResults.Stream(default(Func<Stream, Task>)));
+    }
+
+    [Fact]
+    public void PhysicalFile_WithNullPath_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("path", () => TypedResults.PhysicalFile(default(string)));
+    }
+
+    [Fact]
+    public void PhysicalFile_WithEmptyPath_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("path", () => TypedResults.PhysicalFile(string.Empty));
+    }
+
+    [Fact]
+    public void VirtualFile_WithNullPath_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("path", () => TypedResults.VirtualFile(default(string)));
+    }
+
+    [Fact]
+    public void VirtualFile_WithEmptyPath_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("path", () => TypedResults.VirtualFile(string.Empty));
+    }
+
     [Theory]
     [MemberData(nameof(Stream_ResultHasCorrectValues_Data))]
     public void Stream_ResultHasCorrectValues(int overload, string contentType, string fileDownloadName, bool enableRangeProcessing, DateTimeOffset lastModified, EntityTagHeaderValue entityTag)
@@ -432,9 +544,15 @@ public class TypedResultsTests
     }
 
     [Fact]
-    public void Created_WithNullStringUri_ThrowsArgNullException()
+    public void Created_WithNullStringUri_ThrowsArgException()
     {
-        Assert.Throws<ArgumentNullException>("uri", () => TypedResults.Created(default(string)));
+        Assert.Throws<ArgumentException>("uri", () => TypedResults.Created(default(string)));
+    }
+
+    [Fact]
+    public void Created_WithEmptyStringUri_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("uri", () => TypedResults.Created(string.Empty));
     }
 
     [Fact]
@@ -443,6 +561,24 @@ public class TypedResultsTests
         Assert.Throws<ArgumentNullException>("uri", () => TypedResults.Created(default(Uri)));
     }
 
+    [Fact]
+    public void CreatedOfT_WithNullStringUri_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("uri", () => TypedResults.Created(default(string), default(object)));
+    }
+
+    [Fact]
+    public void CreatedOfT_WithEmptyStringUri_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("uri", () => TypedResults.Created(string.Empty, default(object)));
+    }
+
+    [Fact]
+    public void CreatedOfT_WithNullUri_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("uri", () => TypedResults.Created(default(Uri), default(object)));
+    }
+
     [Fact]
     public void CreatedAtRoute_WithRouteNameAndRouteValuesAndValue_ResultHasCorrectValues()
     {
@@ -550,6 +686,18 @@ public class TypedResultsTests
         Assert.Null(result.StatusCode);
     }
 
+    [Fact]
+    public void LocalRedirect_WithNullStringUrl_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("localUrl", () => TypedResults.LocalRedirect(default(string)));
+    }
+
+    [Fact]
+    public void LocalRedirect_WithEmptyStringUrl_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("localUrl", () => TypedResults.LocalRedirect(string.Empty));
+    }
+
     [Fact]
     public void LocalRedirect_WithUrl_ResultHasCorrectValues()
     {
@@ -677,6 +825,12 @@ public class TypedResultsTests
         Assert.Equal(StatusCodes.Status200OK, result.StatusCode);
     }
 
+    [Fact]
+    public void Problem_WithNullProblem_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("problemDetails", () => TypedResults.Problem(default(ProblemDetails)));
+    }
+
     [Fact]
     public void Problem_WithArgs_ResultHasCorrectValues()
     {
@@ -749,6 +903,12 @@ public class TypedResultsTests
         Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);
     }
 
+    [Fact]
+    public void ValidationProblem_WithNullErrors_ThrowsArgNullException()
+    {
+        Assert.Throws<ArgumentNullException>("errors", () => TypedResults.ValidationProblem(default(IDictionary<string, string[]>)));
+    }
+
     [Fact]
     public void ValidationProblem_WithValidationProblemArg_ResultHasCorrectValues()
     {
@@ -775,6 +935,18 @@ public class TypedResultsTests
         Assert.Equal(extensions, result.ProblemDetails.Extensions);
     }
 
+    [Fact]
+    public void Redirect_WithNullStringUrl_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("url", () => TypedResults.Redirect(default(string)));
+    }
+
+    [Fact]
+    public void Redirect_WithEmptyStringUrl_ThrowsArgException()
+    {
+        Assert.Throws<ArgumentException>("url", () => TypedResults.Redirect(string.Empty));
+    }
+
     [Fact]
     public void Redirect_WithDefaults_ResultHasCorrectValues()
     {
diff --git a/src/Http/Http.Results/test/UnauthorizedResultTests.cs b/src/Http/Http.Results/test/UnauthorizedResultTests.cs
index 9f25870fea8..34b830fbca1 100644
--- a/src/Http/Http.Results/test/UnauthorizedResultTests.cs
+++ b/src/Http/Http.Results/test/UnauthorizedResultTests.cs
@@ -34,6 +34,17 @@ public class UnauthorizedResultTests
         Assert.Equal(StatusCodes.Status401Unauthorized, httpContext.Response.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new UnauthorizedHttpResult();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
     private static IServiceCollection CreateServices()
     {
         var services = new ServiceCollection();
diff --git a/src/Http/Http.Results/test/UnprocessableEntityOfTResultTests.cs b/src/Http/Http.Results/test/UnprocessableEntityOfTResultTests.cs
index d5d3938d85a..9a2349a21fd 100644
--- a/src/Http/Http.Results/test/UnprocessableEntityOfTResultTests.cs
+++ b/src/Http/Http.Results/test/UnprocessableEntityOfTResultTests.cs
@@ -94,6 +94,24 @@ public class UnprocessableEntityOfTResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new UnprocessableEntity<object>(null);
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<UnprocessableEntity<object>>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/UnprocessableEntityResultTests.cs b/src/Http/Http.Results/test/UnprocessableEntityResultTests.cs
index 049d3bfab56..1f1592fdaa5 100644
--- a/src/Http/Http.Results/test/UnprocessableEntityResultTests.cs
+++ b/src/Http/Http.Results/test/UnprocessableEntityResultTests.cs
@@ -55,6 +55,24 @@ public class UnprocessableEntityResultTests
         Assert.Equal(StatusCodes.Status422UnprocessableEntity, producesResponseTypeMetadata.StatusCode);
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new UnprocessableEntity();
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<UnprocessableEntity>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/test/ValidationProblemResultTests.cs b/src/Http/Http.Results/test/ValidationProblemResultTests.cs
index e6b9455d43e..40c01b4419b 100644
--- a/src/Http/Http.Results/test/ValidationProblemResultTests.cs
+++ b/src/Http/Http.Results/test/ValidationProblemResultTests.cs
@@ -74,6 +74,24 @@ public class ValidationProblemResultTests
         Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/problem+json");
     }
 
+    [Fact]
+    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
+    {
+        // Arrange
+        var result = new ValidationProblem(new());
+        HttpContext httpContext = null;
+
+        // Act & Assert
+        Assert.ThrowsAsync<ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
+    }
+
+    [Fact]
+    public void PopulateMetadata_ThrowsArgumentNullException_WhenContextIsNull()
+    {
+        // Act & Assert
+        Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<ValidationProblem>(null));
+    }
+
     private static void PopulateMetadata<TResult>(EndpointMetadataContext context)
         where TResult : IEndpointMetadataProvider => TResult.PopulateMetadata(context);
 
diff --git a/src/Http/Http.Results/tools/ResultsOfTGenerator/Program.cs b/src/Http/Http.Results/tools/ResultsOfTGenerator/Program.cs
index 033e1f00e4d..1479e7d3fff 100644
--- a/src/Http/Http.Results/tools/ResultsOfTGenerator/Program.cs
+++ b/src/Http/Http.Results/tools/ResultsOfTGenerator/Program.cs
@@ -14,7 +14,7 @@ public class Program
     {
         // By default we assume we're being run in the context of the <repo>/src/Http/Http.Results/src
         var pwd = Directory.GetCurrentDirectory();
-        var classTargetFilePath = Path.Combine(pwd, "ResultsOfT.cs");
+        var classTargetFilePath = Path.Combine(pwd, "ResultsOfT.Generated.cs");
         var testsTargetFilePath = Path.Combine(pwd, "..", "test", "ResultsOfTTests.Generated.cs");
 
         if (args.Length > 0)
@@ -80,7 +80,7 @@ public class Program
             writer.WriteLine("/// <remarks>");
             writer.WriteLine("/// An instance of this type cannot be created explicitly. Use the implicit cast operators to create an instance");
             writer.WriteLine("/// from an instance of one of the declared type arguments, e.g.");
-            writer.WriteLine("/// <code>Results&lt;OkObjectHttpResult, ProblemHttpResult&gt; result = Results.Ok();</code>");
+            writer.WriteLine("/// <code>Results&lt;Ok, BadRequest&gt; result = TypedResults.Ok();</code>");
             writer.WriteLine("/// </remarks>");
 
             // Type params docs
@@ -179,6 +179,8 @@ public class Program
             writer.WriteIndentedLine("/// <inheritdoc/>");
             writer.WriteIndentedLine("static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context)");
             writer.WriteIndentedLine("{");
+            writer.WriteIndentedLine(2, "ArgumentNullException.ThrowIfNull(context);");
+            writer.WriteLine();
             for (int j = 1; j <= i; j++)
             {
                 writer.WriteIndentedLine(2, $"ResultsOfTHelper.PopulateMetadataIfTargetIsIEndpointMetadataProvider<TResult{j}>(context);");
@@ -257,9 +259,10 @@ public class Program
             GenerateTest_ExecuteResult_ExecutesAssignedResult(writer, i);
             GenerateTest_Throws_ArgumentNullException_WhenHttpContextIsNull(writer, i);
             GenerateTest_Throws_InvalidOperationException_WhenResultIsNull(writer, i);
-            Generate_AcceptsIResult_AsAnyTypeArg(writer, i);
-            Generate_AcceptsNestedResultsOfT_AsAnyTypeArg(writer, i);
-            Generate_PopulateMetadata_PopulatesMetadataFromTypeArgsThatImplementIEndpointMetadataProvider(writer, i);
+            GenerateTest_AcceptsIResult_AsAnyTypeArg(writer, i);
+            GenerateTest_AcceptsNestedResultsOfT_AsAnyTypeArg(writer, i);
+            GenerateTest_PopulateMetadata_PopulatesMetadataFromTypeArgsThatImplementIEndpointMetadataProvider(writer, i);
+            GenerateTest_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull(writer, i);
         }
 
         Generate_ChecksumResultClass(writer);
@@ -587,15 +590,15 @@ public class Program
         writer.WriteLine();
     }
 
-    static void Generate_AcceptsIResult_AsAnyTypeArg(StreamWriter writer, int typeArgCount)
+    static void GenerateTest_AcceptsIResult_AsAnyTypeArg(StreamWriter writer, int typeArgCount)
     {
         for (int i = 1; i <= typeArgCount; i++)
         {
-            Generate_AcceptsIResult_AsNthTypeArg(writer, typeArgCount, i);
+            GenerateTest_AcceptsIResult_AsNthTypeArg(writer, typeArgCount, i);
         }
     }
 
-    static void Generate_AcceptsIResult_AsNthTypeArg(StreamWriter writer, int typeArgCount, int typeArgNumber)
+    static void GenerateTest_AcceptsIResult_AsNthTypeArg(StreamWriter writer, int typeArgCount, int typeArgNumber)
     {
         //[Theory]
         //[InlineData(1, typeof(ChecksumResult1))]
@@ -695,15 +698,15 @@ public class Program
         writer.WriteLine();
     }
 
-    static void Generate_AcceptsNestedResultsOfT_AsAnyTypeArg(StreamWriter writer, int typeArgCount)
+    static void GenerateTest_AcceptsNestedResultsOfT_AsAnyTypeArg(StreamWriter writer, int typeArgCount)
     {
         for (int i = 1; i <= typeArgCount; i++)
         {
-            Generate_AcceptsNestedResultsOfT_AsNthTypeArg(writer, typeArgCount, i);
+            GenerateTest_AcceptsNestedResultsOfT_AsNthTypeArg(writer, typeArgCount, i);
         }
     }
 
-    static void Generate_AcceptsNestedResultsOfT_AsNthTypeArg(StreamWriter writer, int typeArgCount, int typeArgNumber)
+    static void GenerateTest_AcceptsNestedResultsOfT_AsNthTypeArg(StreamWriter writer, int typeArgCount, int typeArgNumber)
     {
         //[Theory]
         //[InlineData(1, typeof(Results<ChecksumResult1, ChecksumResult2>))]
@@ -803,7 +806,7 @@ public class Program
         writer.WriteLine();
     }
 
-    static void Generate_PopulateMetadata_PopulatesMetadataFromTypeArgsThatImplementIEndpointMetadataProvider(StreamWriter writer, int typeArgNumber)
+    static void GenerateTest_PopulateMetadata_PopulatesMetadataFromTypeArgsThatImplementIEndpointMetadataProvider(StreamWriter writer, int typeArgNumber)
     {
         //[Fact]
         //public void ResultsOfTResult1TResult2_PopulateMetadata_PopulatesMetadataFromTypeArgsThatImplementIEndpointMetadataProvider()
@@ -877,6 +880,46 @@ public class Program
         writer.WriteLine();
     }
 
+    static void GenerateTest_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull(StreamWriter writer, int typeArgNumber)
+    {
+        //[Fact]
+        //public void ResultsOfTResult1TResult2_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull()
+        //{
+        //    // Act & Assert
+        //    Assert.Throws<ArgumentNullException>("context", () => PopulateMetadata<Results<ProvidesMetadataResult1, ProvidesMetadataResult2>>(null));
+        //}
+
+        // Attributes
+        writer.WriteIndentedLine("[Fact]");
+
+        // Start method
+        writer.WriteIndent(1, "public void ResultsOf");
+        for (int j = 1; j <= typeArgNumber; j++)
+        {
+            writer.Write($"TResult{j}");
+        }
+        writer.WriteLine("_PopulateMetadata_Throws_ArgumentNullException_WhenContextIsNull()");
+        writer.WriteIndentedLine("{");
+
+        // Act & Assert
+        writer.WriteIndentedLine(2, "// Act & Assert");
+        writer.WriteIndent(2, "Assert.Throws<ArgumentNullException>(\"context\", () => PopulateMetadata<Results<");
+        for (int j = 1; j <= typeArgNumber; j++)
+        {
+            writer.Write($"ProvidesMetadataResult{j}");
+
+            if (j != typeArgNumber)
+            {
+                writer.Write(", ");
+            }
+        }
+        writer.WriteLine(">>(null));");
+
+        // Close method
+        writer.WriteIndentedLine(1, "}");
+        writer.WriteLine();
+    }
+
     static void Generate_ChecksumResultClass(StreamWriter writer, int typeArgNumber = -1)
     {
         if (typeArgNumber <= 0)
-- 
GitLab