diff --git a/README.md b/README.md
index 637a0fa8b..c631eb6b6 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-# RSCG - 290 Examples of Roslyn Source Code Generators / 16 created by Microsoft /
+# RSCG - 291 Examples of Roslyn Source Code Generators / 16 created by Microsoft /
-The RSCG_Examples repository is a comprehensive documentation system that automatically processes and showcases 290 Roslyn Source Code Generator (RSCG) examples. The system transforms individual RSCG projects into structured documentation with code examples and cross-referenced content with a searchable website and code example exports.
+The RSCG_Examples repository is a comprehensive documentation system that automatically processes and showcases 291 Roslyn Source Code Generator (RSCG) examples. The system transforms individual RSCG projects into structured documentation with code examples and cross-referenced content with a searchable website and code example exports.
This system serves as both a learning resource for .NET developers interested in source generators and an automated pipeline for maintaining up-to-date documentation about the RSCG ecosystem
-## Latest Update : 2026-09-04 => 04 September 2026
+## Latest Update : 2026-09-05 => 05 September 2026
If you want to see examples with code, please click ***[List V2](https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG)***
@@ -24,8 +24,30 @@ If you want to be notified each time I add a new RSCG example , please click htt
## Content
-Those are the 290 Roslyn Source Code Generators that I have tested you can see and download source code example.
+Those are the 291 Roslyn Source Code Generators that I have tested you can see and download source code example.
( including 16 from Microsoft )
+### 291. [Tenekon.MethodOverloads.SourceGenerator](https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator) , in the [EnhancementClass](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#enhancementclass) category
+
+Generated on : 2026-09-05 => 05 September 2026
+
+
+ Expand
+
+
+
+Author: Tenekon
+
+C# source generator that creates extension method overloads by treating a parameter window as optional and emitting legal, unique subsequences.
+
+Nuget: [https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/](https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/)
+
+
+Link: [https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator](https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator)
+
+Source: [https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator](https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator)
+
+
+
### 290. [MagicConstants](https://ignatandrei.github.io/RSCG_Examples/v2/docs/MagicConstants) , in the [FilesToCode](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#filestocode) category
Generated on : 2026-09-04 => 04 September 2026
diff --git a/later.md b/later.md
index cbbb5c45f..61201f6f6 100644
--- a/later.md
+++ b/later.md
@@ -1,6 +1,6 @@
# Just later
-## Latest Update : 2026-09-04 => 04 September 2026
+## Latest Update : 2026-09-05 => 05 September 2026
diff --git a/v2/.tours/Tenekon.MethodOverloads.SourceGenerator.tour b/v2/.tours/Tenekon.MethodOverloads.SourceGenerator.tour
new file mode 100644
index 000000000..0976f1451
--- /dev/null
+++ b/v2/.tours/Tenekon.MethodOverloads.SourceGenerator.tour
@@ -0,0 +1,72 @@
+
+{
+ "$schema": "https://aka.ms/codetour-schema",
+ "title": "Tenekon.MethodOverloads.SourceGenerator",
+ "steps":
+ [
+ {
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/overloadMethod.csproj",
+ "description": "First, we add Nuget [Tenekon.MethodOverloads.SourceGenerator](https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/) in csproj ",
+ "pattern": "Tenekon.MethodOverloads.SourceGenerator"
+ }
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/Program.cs",
+ "description": "File Program.cs \r\n>> dotnet run --project rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/overloadMethod.csproj ",
+ "pattern": "this is the code"
+ }
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/Person.cs",
+ "description": "File Person.cs ",
+ "pattern": "this is the code"
+ }
+
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/obj/GX/Tenekon.MethodOverloads.SourceGenerator/Tenekon.MethodOverloads.SourceGenerator.MethodOverloadsGenerator/SupplyParameterTypeAttribute.g.cs",
+ "description": "Generated File 7 from 7 : SupplyParameterTypeAttribute.g.cs ",
+ "line": 1
+ }
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/obj/GX/Tenekon.MethodOverloads.SourceGenerator/Tenekon.MethodOverloads.SourceGenerator.MethodOverloadsGenerator/OverloadGenerationOptionsAttribute.g.cs",
+ "description": "Generated File 6 from 7 : OverloadGenerationOptionsAttribute.g.cs ",
+ "line": 1
+ }
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/obj/GX/Tenekon.MethodOverloads.SourceGenerator/Tenekon.MethodOverloads.SourceGenerator.MethodOverloadsGenerator/MethodOverloads_overloadMethod.g.cs",
+ "description": "Generated File 5 from 7 : MethodOverloads_overloadMethod.g.cs ",
+ "line": 1
+ }
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/obj/GX/Tenekon.MethodOverloads.SourceGenerator/Tenekon.MethodOverloads.SourceGenerator.MethodOverloadsGenerator/MatcherUsageAttribute.g.cs",
+ "description": "Generated File 4 from 7 : MatcherUsageAttribute.g.cs ",
+ "line": 1
+ }
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/obj/GX/Tenekon.MethodOverloads.SourceGenerator/Tenekon.MethodOverloads.SourceGenerator.MethodOverloadsGenerator/GenerateOverloadsAttribute.g.cs",
+ "description": "Generated File 3 from 7 : GenerateOverloadsAttribute.g.cs ",
+ "line": 1
+ }
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/obj/GX/Tenekon.MethodOverloads.SourceGenerator/Tenekon.MethodOverloads.SourceGenerator.MethodOverloadsGenerator/GenerateMethodOverloadsAttribute.g.cs",
+ "description": "Generated File 2 from 7 : GenerateMethodOverloadsAttribute.g.cs ",
+ "line": 1
+ }
+
+ ,{
+ "file": "rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/obj/GX/Tenekon.MethodOverloads.SourceGenerator/Tenekon.MethodOverloads.SourceGenerator.MethodOverloadsGenerator/EmbeddedAttribute.g.cs",
+ "description": "Generated File 1 from 7 : EmbeddedAttribute.g.cs ",
+ "line": 1
+ }
+
+ ],
+
+ "ref": "main"
+
+}
\ No newline at end of file
diff --git a/v2/Generator/all.csv b/v2/Generator/all.csv
index 43ed8072d..b52204679 100644
--- a/v2/Generator/all.csv
+++ b/v2/Generator/all.csv
@@ -289,3 +289,4 @@ Nr,Key,Source,Category
288,Najlot.Map.SourceGenerator, https://github.com/najlot/Map,Mapper
289,AOP.Logging.SourceGenerator, https://github.com/dborgards/aop.logging.net,EnhancementClass
290,MagicConstants, https://github.com/LieselThuriot/MagicConstants,FilesToCode
+291,Tenekon.MethodOverloads.SourceGenerator, https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator,EnhancementClass
diff --git a/v2/RSCGExamplesData/GeneratorDataRec.json b/v2/RSCGExamplesData/GeneratorDataRec.json
index 810aa1229..1af0c7ad1 100644
--- a/v2/RSCGExamplesData/GeneratorDataRec.json
+++ b/v2/RSCGExamplesData/GeneratorDataRec.json
@@ -1757,6 +1757,11 @@
"Category": 8,
"dtStart": "2026-09-04T00:00:00",
"show": true
+ },
+ {
+ "ID":"Tenekon.MethodOverloads.SourceGenerator",
+ "Category": 5,
+ "dtStart": "2026-09-05T00:00:00",
+ "show": true
}
-
]
\ No newline at end of file
diff --git a/v2/book/examples/Tenekon.MethodOverloads.SourceGenerator.html b/v2/book/examples/Tenekon.MethodOverloads.SourceGenerator.html
new file mode 100644
index 000000000..101d16e66
--- /dev/null
+++ b/v2/book/examples/Tenekon.MethodOverloads.SourceGenerator.html
@@ -0,0 +1,89 @@
+
+
RSCG nr 291 : Tenekon.MethodOverloads.SourceGenerator
+
+Info
+Nuget : https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/
+
+You can find more details at : https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator
+
+Author :Tenekon
+
+Source: https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator
+
+About
+
+generate overloads of the same method
+
+
+ How to use
+
+
+
+
+This was for me the starting code
+
+
+ I have coded the file Person.cs
+
+
+
+
+
+ I have coded the file Program.cs
+
+
+
+ And here are the generated files
+
+
+ The file generated is EmbeddedAttribute.g.cs
+
+
+
+
+ The file generated is GenerateMethodOverloadsAttribute.g.cs
+
+
+
+
+ The file generated is GenerateOverloadsAttribute.g.cs
+
+
+
+
+ The file generated is MatcherUsageAttribute.g.cs
+
+
+
+
+ The file generated is MethodOverloads_overloadMethod.g.cs
+
+
+
+
+ The file generated is OverloadGenerationOptionsAttribute.g.cs
+
+
+
+
+ The file generated is SupplyParameterTypeAttribute.g.cs
+
+
+
+
+ You can download the code and this page as pdf from
+
+ https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator
+
+
+
+
+
+ You can see the whole list at
+
+ https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG
+
+
+
diff --git a/v2/book/list.html b/v2/book/list.html
index 62a5b335b..a0499e48f 100644
--- a/v2/book/list.html
+++ b/v2/book/list.html
@@ -17,7 +17,7 @@
-This is the list of 290 RSCG with examples =>
+This is the list of 291 RSCG with examples =>
diff --git a/v2/book/pandocHTML.yaml b/v2/book/pandocHTML.yaml
index fc72e1059..0eb0292f9 100644
--- a/v2/book/pandocHTML.yaml
+++ b/v2/book/pandocHTML.yaml
@@ -304,6 +304,7 @@ input-files:
- examples/Najlot.Map.SourceGenerator.html
- examples/AOP.Logging.SourceGenerator.html
- examples/MagicConstants.html
+- examples/Tenekon.MethodOverloads.SourceGenerator.html
# or you may use input-file: with a single value
# defaults:
diff --git a/v2/docFind.json b/v2/docFind.json
index ce278717c..46a1b210a 100644
--- a/v2/docFind.json
+++ b/v2/docFind.json
@@ -1738,5 +1738,11 @@
"category": "FilesToCode",
"href": "/RSCG_Examples/v2/docs/MagicConstants/",
"body": "Package Description"
+ },
+ {
+ "title": "Tenekon.MethodOverloads.SourceGenerator",
+ "category": "EnhancementClass",
+ "href": "/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator/",
+ "body": "C# source generator that creates extension method overloads by treating a parameter window as optional and emitting legal, unique subsequences."
}
]
\ No newline at end of file
diff --git a/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/description.json b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/description.json
new file mode 100644
index 000000000..ef6f0f0a1
--- /dev/null
+++ b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/description.json
@@ -0,0 +1,22 @@
+{
+ "generator":{
+ "name":"Tenekon.MethodOverloads.SourceGenerator",
+ "nuget":[
+ "https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/"
+ ],
+ "link":"https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator",
+ "author":"Tenekon",
+ "source":"https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator"
+ },
+ "data":{
+ "goodFor":["generate overloads of the same method"],
+ "csprojDemo":"overloadMethod.csproj",
+ "csFiles":["Person.cs","Program.cs"],
+ "excludeDirectoryGenerated":[""],
+ "includeAdditionalFiles":[""]
+ },
+ "links":{
+ "blog":"",
+ "video":""
+ }
+}
\ No newline at end of file
diff --git a/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/nuget.txt b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/nuget.txt
new file mode 100644
index 000000000..0dd052897
--- /dev/null
+++ b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/nuget.txt
@@ -0,0 +1 @@
+C# source generator that creates extension method overloads by treating a parameter window as optional and emitting legal, unique subsequences.
\ No newline at end of file
diff --git a/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/readme.txt b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/readme.txt
new file mode 100644
index 000000000..8f03b6e26
--- /dev/null
+++ b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/readme.txt
@@ -0,0 +1,296 @@
+# Tenekon.MethodOverloads.SourceGenerator
+
+[](https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator/actions/workflows/coverage.yml)
+[](https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator)
+[](https://codecov.io/gh/tenekon/Tenekon.MethodOverloads.SourceGenerator)
+[](LICENSE)
+
+A C# source generator that creates extension overloads by treating a selected parameter window as optional and emitting legal, unique subsequences. It supports matchers, bucketized output, visibility overrides, subsequence strategies, and generic substitution via `SupplyParameterType`.
+
+## Install
+
+```xml
+
+
+
+```
+
+## Quickstart
+
+1. Add `[GenerateOverloads]` to a method, or `[GenerateMethodOverloads(Matchers = ...)]` to a type.
+2. (Optional) Add `[OverloadGenerationOptions(...)]` to control matching and output.
+3. Build. Generated code appears as `MethodOverloads_*.g.cs`.
+
+## Core Concepts
+
+- **Window**: the parameter range that can be omitted to produce overloads.
+- **ExcludeAny**: a list of parameter names that must be omitted in every overload within the window.
+- **Matchers**: define windows on matcher methods and apply them to target methods.
+- **Bucketization**: route generated methods into a specific static partial class.
+- **SupplyParameterType**: substitute method type parameters with concrete types before generation.
+
+## Examples
+
+### 1) Basic Window
+
+Input:
+```csharp
+namespace Demo;
+
+using Tenekon.MethodOverloads;
+
+public sealed class OrderService
+{
+ [GenerateOverloads(Begin = nameof(tenantId))]
+ public void CreateOrder(string orderId, string tenantId, bool requireApproval) { }
+}
+```
+
+Output:
+```csharp
+namespace Demo;
+
+public static class MethodOverloads
+{
+ public static void CreateOrder(this OrderService source, string orderId) =>
+ source.CreateOrder(orderId, tenantId: default(string), requireApproval: default(bool));
+
+ public static void CreateOrder(this OrderService source, string orderId, string tenantId) =>
+ source.CreateOrder(orderId, tenantId, requireApproval: default(bool));
+
+ public static void CreateOrder(this OrderService source, string orderId, bool requireApproval) =>
+ source.CreateOrder(orderId, tenantId: default(string), requireApproval);
+}
+```
+
+### 2) Window Variants
+
+Use `Begin`, `End`, `BeginExclusive`, `EndExclusive`, or the constructor `GenerateOverloads(string beginEnd)`.
+
+```csharp
+[GenerateOverloads(BeginExclusive = nameof(start), End = nameof(end))]
+public void Query(int start, int end, bool includeMetadata, string? tag) { }
+```
+
+### 3) ExcludeAny (Forced Omissions)
+
+ExcludeAny forces specific parameters inside the window to be omitted in every generated overload.
+
+```csharp
+[GenerateOverloads(Begin = nameof(optionalA), End = nameof(optionalC), ExcludeAny = [nameof(optionalB)])]
+public void Configure(int required, string? optionalA, string? optionalB, string? optionalC) { }
+```
+
+Notes:
+- `ExcludeAny` cannot be combined with `Matchers` on the same attribute.
+- If ExcludeAny covers the whole window, no overloads are generated for that attribute.
+
+### 4) Matcher-Based Generation (Method-Level)
+
+Input:
+```csharp
+namespace Demo;
+
+using Tenekon.MethodOverloads;
+
+public sealed class UserService
+{
+ [GenerateOverloads(Matchers = [typeof(UserMatchers)])]
+ public void UpdateUser(string id, string name, int level, bool active) { }
+}
+
+internal interface UserMatchers
+{
+ [GenerateOverloads(nameof(paramB))]
+ void UpdateUser(int paramA, bool paramB);
+}
+```
+
+Output:
+```csharp
+namespace Demo;
+
+public static class MethodOverloads
+{
+ public static void UpdateUser(this UserService source, string id, string name, int level) =>
+ source.UpdateUser(id, name, level, active: default(bool));
+}
+```
+
+### 5) Matcher-Based Generation (Type-Level + Static Target)
+
+Input:
+```csharp
+namespace Demo;
+
+using Tenekon.MethodOverloads;
+
+[GenerateMethodOverloads(Matchers = [typeof(MathMatchers)])]
+public static class MathUtils
+{
+ public static void Multiply(int left, int right, bool checkedOverflow) { }
+}
+
+internal interface MathMatchers
+{
+ [GenerateOverloads(nameof(paramB))]
+ void Multiply(int paramA, bool paramB);
+}
+```
+
+Output:
+```csharp
+namespace Demo;
+
+public static class MethodOverloads
+{
+ extension(MathUtils)
+ {
+ public static void Multiply(int left, int right) =>
+ MathUtils.Multiply(left, right, checkedOverflow: default(bool));
+ }
+}
+```
+
+### 6) Range Anchor Match Mode
+
+`RangeAnchorMatchMode.TypeOnly` (default) matches by type only.
+`RangeAnchorMatchMode.TypeAndName` requires matching names as well.
+
+```csharp
+[OverloadGenerationOptions(RangeAnchorMatchMode = RangeAnchorMatchMode.TypeAndName)]
+[GenerateOverloads(Matchers = [typeof(ServiceMatchers)])]
+public void Call(string id, string name, bool active) { }
+```
+
+### 7) Subsequence Strategy
+
+`OverloadSubsequenceStrategy.UniqueBySignature` (default) generates all unique overloads.
+`OverloadSubsequenceStrategy.PrefixOnly` generates only prefix omissions.
+
+```csharp
+[OverloadGenerationOptions(SubsequenceStrategy = OverloadSubsequenceStrategy.PrefixOnly)]
+[GenerateOverloads(Begin = nameof(optionalA))]
+public void Configure(int required, string? optionalA, bool optionalB) { }
+```
+
+### 8) Overload Visibility
+
+```csharp
+[OverloadGenerationOptions(OverloadVisibility = OverloadVisibility.Internal)]
+[GenerateOverloads(Begin = nameof(optionalA))]
+public void Configure(int required, string? optionalA, bool optionalB) { }
+```
+
+### 9) Bucketization (Scoped Static Classes)
+
+Route generated overloads into a specific static partial class:
+
+```csharp
+public static partial class MyBucket
+{
+}
+
+[OverloadGenerationOptions(BucketType = typeof(MyBucket))]
+[GenerateOverloads(Begin = nameof(optionalA))]
+public void Configure(int required, string? optionalA, bool optionalB) { }
+```
+
+Output:
+```csharp
+public static partial class MyBucket
+{
+ public static void Configure(this /* target type */ source, int required) =>
+ source.Configure(required, optionalA: default(string), optionalB: default(bool));
+}
+```
+
+### 10) SupplyParameterType (Generic Substitution)
+
+Replace method type parameters with concrete types in generated overloads and invocations.
+
+```csharp
+public sealed class Constraint { }
+
+public interface IService { }
+
+public sealed class Api
+{
+ [GenerateOverloads(nameof(optionalObject))]
+ [SupplyParameterType(nameof(TConstraint), typeof(Constraint))]
+ public void Use(IService? service, object? optionalObject) { }
+}
+```
+
+Output:
+```csharp
+public static class MethodOverloads
+{
+ public static void Use(this Api source, IService? service) =>
+ source.Use(service, default(object?));
+}
+```
+
+If only some method type parameters are supplied, the overload stays generic for the remaining ones.
+
+### 11) Generic Containing Types
+
+Containing type type parameters and constraints are preserved on generated overloads.
+
+```csharp
+public sealed class Container where T : class, new()
+{
+ [GenerateOverloads(nameof(optionalObject))]
+ public void Create(T value, object? optionalObject) { }
+}
+```
+
+Generated overloads keep `T` and its constraints.
+
+## MSBuild Options
+
+Emit attributes only (skip generation and diagnostics):
+```xml
+
+ true
+
+```
+
+## Diagnostics
+
+Diagnostics are reported by the analyzer and surfaced during build:
+
+- `MOG001` Invalid window anchor.
+- `MOG002` Matcher has no subsequence match.
+- `MOG003` Defaults inside window.
+- `MOG004` Params outside window.
+- `MOG005` Ref/out/in omitted.
+- `MOG006` Duplicate signature skipped.
+- `MOG007` Conflicting window anchors (BeginEnd vs Begin/End).
+- `MOG008` Redundant Begin and End.
+- `MOG009` Begin and BeginExclusive conflict.
+- `MOG010` End and EndExclusive conflict.
+- `MOG011` Parameterless target method.
+- `MOG012` Matchers + window anchors conflict.
+- `MOG013` Invalid bucket type.
+- `MOG014` Invalid SupplyParameterType usage.
+- `MOG015` SupplyParameterType refers to missing type parameter.
+- `MOG016` Conflicting SupplyParameterType mappings.
+- `MOG017` Matchers + ExcludeAny conflict.
+- `MOG018` ExcludeAny refers to missing/out-of-window parameter.
+- `MOG019` ExcludeAny contains invalid entries.
+
+You can downgrade error-level diagnostics in `.globalconfig` if you need the project to compile with intentional violations.
+
+## Generation Rules (Summary)
+
+- Only ordinary, non-private methods are eligible.
+- Window omissions cannot drop `ref/out/in` parameters.
+- `params` must be inside the optional window to be omitted.
+- Existing method signatures are not duplicated.
+- Defaults inside the window are not allowed.
+- Matcher usages are emitted only when the matcher type is at least `internal`.
+
+## Docs
+
+See `docs/generator.md` for detailed behavior and `docs/acceptance-criterias.md` for the acceptance project structure.
diff --git a/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod.slnx b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod.slnx
new file mode 100644
index 000000000..de8cd01aa
--- /dev/null
+++ b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod.slnx
@@ -0,0 +1,3 @@
+
+
+
diff --git a/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/Person.cs b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/Person.cs
new file mode 100644
index 000000000..084090433
--- /dev/null
+++ b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/Person.cs
@@ -0,0 +1,14 @@
+namespace overloadMethod;
+
+public class Person
+{
+ public string FirstName { get; set; } = string.Empty;
+ public string LastName { get; set; } = string.Empty;
+
+ [Tenekon.MethodOverloads.GenerateOverloads(Begin = nameof(MiddleName))]
+ public string FullName(string MiddleName, bool ToLowerCase)
+ {
+ var fullName = $"{FirstName} {MiddleName} {LastName}";
+ return ToLowerCase ? fullName.ToLower() : fullName;
+ }
+}
diff --git a/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/Program.cs b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/Program.cs
new file mode 100644
index 000000000..585d66603
--- /dev/null
+++ b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/Program.cs
@@ -0,0 +1,7 @@
+using overloadMethod;
+
+Person p = new();
+p.FirstName= "Andrei";
+p.LastName = "Ignat";
+
+Console.WriteLine(p.FullName());
diff --git a/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/overloadMethod.csproj b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/overloadMethod.csproj
new file mode 100644
index 000000000..e1a09e150
--- /dev/null
+++ b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/src/overloadMethod/overloadMethod.csproj
@@ -0,0 +1,21 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+ true
+ $(BaseIntermediateOutputPath)\GX
+
+
+
diff --git a/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/video.json b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/video.json
new file mode 100644
index 000000000..46c27a4b4
--- /dev/null
+++ b/v2/rscg_examples/Tenekon.MethodOverloads.SourceGenerator/video.json
@@ -0,0 +1,39 @@
+{
+ "scriptName": "Tenekon.MethodOverloads.SourceGenerator",
+ "steps":
+[
+ {"typeStep":"exec","arg":"clipchamp.exe launch"},
+ {"typeStep":"text","arg": "Welcome to Roslyn Examples"},
+ {"typeStep":"text","arg":"If you want to see more examples , see List Of RSCG"},
+ {"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG"},
+ {"typeStep":"text","arg": "My name is Andrei Ignat and I am deeply fond of Roslyn Source Code Generator. "},
+
+{"typeStep":"text","arg": "Today I will present Tenekon.MethodOverloads.SourceGenerator . generate overloads of the same method ."},
+{"typeStep":"browser","arg":"https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/"},
+{"typeStep":"text","arg": "The whole example is here"},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator"},
+{"typeStep":"text","arg": "You can download the code from here"},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator#download-example-net--c-"},
+{"typeStep":"text","arg":"Here is the code downloaded "},
+{"typeStep":"exec","arg":"explorer.exe /select,D:\\gth\\RSCG_Examples\\v2\\Generator.sln"},
+{"typeStep":"text","arg": "So , let's start the project with Visual Studio Code "},
+{"typeStep":"stepvscode","arg": "-n D:\\gth\\RSCG_Examples\\v2"},
+
+{"typeStep":"text","arg": "To use it ,you will put the Nuget Tenekon.MethodOverloads.SourceGenerator into the csproj "},
+
+{"typeStep":"stepvscode","arg": "-r -g D:\\gth\\RSCG_Examples\\v2\\rscg_examples\\Tenekon.MethodOverloads.SourceGenerator\\src\\overloadMethod\\overloadMethod.csproj"},
+
+{"typeStep":"text","arg": "And now I will show you an example of using Tenekon.MethodOverloads.SourceGenerator"},
+
+{"typeStep":"hide","arg": "now execute the tour in VSCode"},
+{"typeStep":"tour", "arg": "src/.tours/"},
+{"typeStep":"text","arg":" And I will execute the project"},
+{"typeStep":"showproj", "arg":"overloadMethod.csproj"},
+{"typeStep":"text","arg":" This concludes the project"},
+{"typeStep":"waitseconds","arg":"30"},
+{"typeStep":"text","arg": "Remember, you can download the code from here"},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator#download-example-net--c-",
+SpeakTest=" "},
+{"typeStep":"waitseconds","arg":"30"},
+]
+}
diff --git a/v2/rscg_examples_site/docs/Authors/Tenekon.md b/v2/rscg_examples_site/docs/Authors/Tenekon.md
new file mode 100644
index 000000000..93d6c9011
--- /dev/null
+++ b/v2/rscg_examples_site/docs/Authors/Tenekon.md
@@ -0,0 +1,7 @@
+# Author : Tenekon
+
+Number RSCG: 1
+
+
+ 1 [Tenekon.MethodOverloads.SourceGenerator](/docs/Tenekon.MethodOverloads.SourceGenerator) [](https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/)  2026-09-05
+
diff --git a/v2/rscg_examples_site/docs/Categories/EnhancementClass.md b/v2/rscg_examples_site/docs/Categories/EnhancementClass.md
index 7561e4407..28c883f55 100644
--- a/v2/rscg_examples_site/docs/Categories/EnhancementClass.md
+++ b/v2/rscg_examples_site/docs/Categories/EnhancementClass.md
@@ -1,6 +1,6 @@
EnhancementClass
-Number RSCG: 32
+Number RSCG: 33
1 [AOP.Logging.SourceGenerator](/docs/AOP.Logging.SourceGenerator) [](https://www.nuget.org/packages/AOP.Logging.SourceGenerator/)  2026-08-30
@@ -62,7 +62,9 @@ Number RSCG: 32
30 [TelemetryLogging](/docs/TelemetryLogging) [](https://www.nuget.org/packages/Microsoft.Extensions.Telemetry.Abstractions/)  2023-11-30
- 31 [ThisClass](/docs/ThisClass) [](https://www.nuget.org/packages/ThisClass/)  2024-04-19
+ 31 [Tenekon.MethodOverloads.SourceGenerator](/docs/Tenekon.MethodOverloads.SourceGenerator) [](https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/)  2026-09-05
- 32 [TrimItEasy](/docs/TrimItEasy) [](https://www.nuget.org/packages/TrimItEasy/)  2026-08-28
+ 32 [ThisClass](/docs/ThisClass) [](https://www.nuget.org/packages/ThisClass/)  2024-04-19
+
+ 33 [TrimItEasy](/docs/TrimItEasy) [](https://www.nuget.org/packages/TrimItEasy/)  2026-08-28
\ No newline at end of file
diff --git a/v2/rscg_examples_site/docs/Categories/_PrimitiveEnhancementClass.mdx b/v2/rscg_examples_site/docs/Categories/_PrimitiveEnhancementClass.mdx
index 1dc397f34..70fdcb868 100644
--- a/v2/rscg_examples_site/docs/Categories/_PrimitiveEnhancementClass.mdx
+++ b/v2/rscg_examples_site/docs/Categories/_PrimitiveEnhancementClass.mdx
@@ -60,9 +60,11 @@
30 [TelemetryLogging](/docs/TelemetryLogging) [](https://www.nuget.org/packages/Microsoft.Extensions.Telemetry.Abstractions/)  2023-11-30
- 31 [ThisClass](/docs/ThisClass) [](https://www.nuget.org/packages/ThisClass/)  2024-04-19
+ 31 [Tenekon.MethodOverloads.SourceGenerator](/docs/Tenekon.MethodOverloads.SourceGenerator) [](https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/)  2026-09-05
- 32 [TrimItEasy](/docs/TrimItEasy) [](https://www.nuget.org/packages/TrimItEasy/)  2026-08-28
+ 32 [ThisClass](/docs/ThisClass) [](https://www.nuget.org/packages/ThisClass/)  2024-04-19
+
+ 33 [TrimItEasy](/docs/TrimItEasy) [](https://www.nuget.org/packages/TrimItEasy/)  2026-08-28
### See category
diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/Tenekon.MethodOverloads.SourceGenerator.md b/v2/rscg_examples_site/docs/RSCG-Examples/Tenekon.MethodOverloads.SourceGenerator.md
new file mode 100644
index 000000000..7619ad75b
--- /dev/null
+++ b/v2/rscg_examples_site/docs/RSCG-Examples/Tenekon.MethodOverloads.SourceGenerator.md
@@ -0,0 +1,655 @@
+---
+sidebar_position: 2910
+title: 291 - Tenekon.MethodOverloads.SourceGenerator
+description: generate overloads of the same method
+slug: /Tenekon.MethodOverloads.SourceGenerator
+---
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import TOCInline from '@theme/TOCInline';
+import SameCategory from '../Categories/_PrimitiveEnhancementClass.mdx';
+
+# Tenekon.MethodOverloads.SourceGenerator by Tenekon
+
+
+
+
+## NuGet / site data
+[](https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/)
+[](https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator)
+
+
+## Details
+
+### Info
+:::info
+
+Name: **Tenekon.MethodOverloads.SourceGenerator**
+
+C# source generator that creates extension method overloads by treating a parameter window as optional and emitting legal, unique subsequences.
+
+Author: Tenekon
+
+NuGet:
+*https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/*
+
+
+You can find more details at https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator
+
+Source: https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator
+
+:::
+
+### Author
+:::note
+Tenekon
+
+:::
+
+## Original Readme
+:::note
+
+### Tenekon.MethodOverloads.SourceGenerator
+
+[](https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator/actions/workflows/coverage.yml)
+[](https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator)
+[](https://codecov.io/gh/tenekon/Tenekon.MethodOverloads.SourceGenerator)
+[](https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator/LICENSE)
+
+A C# source generator that creates extension overloads by treating a selected parameter window as optional and emitting legal, unique subsequences. It supports matchers, bucketized output, visibility overrides, subsequence strategies, and generic substitution via `SupplyParameterType`.
+
+###### Install
+
+```xml
+
+
+
+```
+
+###### Quickstart
+
+1. Add `[GenerateOverloads]` to a method, or `[GenerateMethodOverloads(Matchers = ...)]` to a type.
+2. (Optional) Add `[OverloadGenerationOptions(...)]` to control matching and output.
+3. Build. Generated code appears as `MethodOverloads_*.g.cs`.
+
+###### Core Concepts
+
+- **Window**: the parameter range that can be omitted to produce overloads.
+- **ExcludeAny**: a list of parameter names that must be omitted in every overload within the window.
+- **Matchers**: define windows on matcher methods and apply them to target methods.
+- **Bucketization**: route generated methods into a specific static partial class.
+- **SupplyParameterType**: substitute method type parameters with concrete types before generation.
+
+###### Examples
+
+######### 1) Basic Window
+
+Input:
+```csharp
+namespace Demo;
+
+using Tenekon.MethodOverloads;
+
+public sealed class OrderService
+{
+ [GenerateOverloads(Begin = nameof(tenantId))]
+ public void CreateOrder(string orderId, string tenantId, bool requireApproval) \{ }
+}
+```
+
+Output:
+```csharp
+namespace Demo;
+
+public static class MethodOverloads
+{
+ public static void CreateOrder(this OrderService source, string orderId) =>
+ source.CreateOrder(orderId, tenantId: default(string), requireApproval: default(bool));
+
+ public static void CreateOrder(this OrderService source, string orderId, string tenantId) =>
+ source.CreateOrder(orderId, tenantId, requireApproval: default(bool));
+
+ public static void CreateOrder(this OrderService source, string orderId, bool requireApproval) =>
+ source.CreateOrder(orderId, tenantId: default(string), requireApproval);
+}
+```
+
+######### 2) Window Variants
+
+Use `Begin`, `End`, `BeginExclusive`, `EndExclusive`, or the constructor `GenerateOverloads(string beginEnd)`.
+
+```csharp
+[GenerateOverloads(BeginExclusive = nameof(start), End = nameof(end))]
+public void Query(int start, int end, bool includeMetadata, string? tag) \{ }
+```
+
+######### 3) ExcludeAny (Forced Omissions)
+
+ExcludeAny forces specific parameters inside the window to be omitted in every generated overload.
+
+```csharp
+[GenerateOverloads(Begin = nameof(optionalA), End = nameof(optionalC), ExcludeAny = [nameof(optionalB)])]
+public void Configure(int required, string? optionalA, string? optionalB, string? optionalC) \{ }
+```
+
+Notes:
+- `ExcludeAny` cannot be combined with `Matchers` on the same attribute.
+- If ExcludeAny covers the whole window, no overloads are generated for that attribute.
+
+######### 4) Matcher-Based Generation (Method-Level)
+
+Input:
+```csharp
+namespace Demo;
+
+using Tenekon.MethodOverloads;
+
+public sealed class UserService
+{
+ [GenerateOverloads(Matchers = [typeof(UserMatchers)])]
+ public void UpdateUser(string id, string name, int level, bool active) \{ }
+}
+
+internal interface UserMatchers
+{
+ [GenerateOverloads(nameof(paramB))]
+ void UpdateUser(int paramA, bool paramB);
+}
+```
+
+Output:
+```csharp
+namespace Demo;
+
+public static class MethodOverloads
+{
+ public static void UpdateUser(this UserService source, string id, string name, int level) =>
+ source.UpdateUser(id, name, level, active: default(bool));
+}
+```
+
+######### 5) Matcher-Based Generation (Type-Level + Static Target)
+
+Input:
+```csharp
+namespace Demo;
+
+using Tenekon.MethodOverloads;
+
+[GenerateMethodOverloads(Matchers = [typeof(MathMatchers)])]
+public static class MathUtils
+{
+ public static void Multiply(int left, int right, bool checkedOverflow) \{ }
+}
+
+internal interface MathMatchers
+{
+ [GenerateOverloads(nameof(paramB))]
+ void Multiply(int paramA, bool paramB);
+}
+```
+
+Output:
+```csharp
+namespace Demo;
+
+public static class MethodOverloads
+{
+ extension(MathUtils)
+ {
+ public static void Multiply(int left, int right) =>
+ MathUtils.Multiply(left, right, checkedOverflow: default(bool));
+ }
+}
+```
+
+######### 6) Range Anchor Match Mode
+
+`RangeAnchorMatchMode.TypeOnly` (default) matches by type only.
+`RangeAnchorMatchMode.TypeAndName` requires matching names as well.
+
+```csharp
+[OverloadGenerationOptions(RangeAnchorMatchMode = RangeAnchorMatchMode.TypeAndName)]
+[GenerateOverloads(Matchers = [typeof(ServiceMatchers)])]
+public void Call(string id, string name, bool active) \{ }
+```
+
+######### 7) Subsequence Strategy
+
+`OverloadSubsequenceStrategy.UniqueBySignature` (default) generates all unique overloads.
+`OverloadSubsequenceStrategy.PrefixOnly` generates only prefix omissions.
+
+```csharp
+[OverloadGenerationOptions(SubsequenceStrategy = OverloadSubsequenceStrategy.PrefixOnly)]
+[GenerateOverloads(Begin = nameof(optionalA))]
+public void Configure(int required, string? optionalA, bool optionalB) \{ }
+```
+
+######### 8) Overload Visibility
+
+```csharp
+[OverloadGenerationOptions(OverloadVisibility = OverloadVisibility.Internal)]
+[GenerateOverloads(Begin = nameof(optionalA))]
+public void Configure(int required, string? optionalA, bool optionalB) \{ }
+```
+
+######### 9) Bucketization (Scoped Static Classes)
+
+Route generated overloads into a specific static partial class:
+
+```csharp
+public static partial class MyBucket
+{
+}
+
+[OverloadGenerationOptions(BucketType = typeof(MyBucket))]
+[GenerateOverloads(Begin = nameof(optionalA))]
+public void Configure(int required, string? optionalA, bool optionalB) \{ }
+```
+
+Output:
+```csharp
+public static partial class MyBucket
+{
+ public static void Configure(this /* target type */ source, int required) =>
+ source.Configure(required, optionalA: default(string), optionalB: default(bool));
+}
+```
+
+######### 10) SupplyParameterType (Generic Substitution)
+
+Replace method type parameters with concrete types in generated overloads and invocations.
+
+```csharp
+public sealed class Constraint \{ }
+
+public interface IService \{ }
+
+public sealed class Api
+{
+ [GenerateOverloads(nameof(optionalObject))]
+ [SupplyParameterType(nameof(TConstraint), typeof(Constraint))]
+ public void Use(IService? service, object? optionalObject) \{ }
+}
+```
+
+Output:
+```csharp
+public static class MethodOverloads
+{
+ public static void Use(this Api source, IService? service) =>
+ source.Use(service, default(object?));
+}
+```
+
+If only some method type parameters are supplied, the overload stays generic for the remaining ones.
+
+######### 11) Generic Containing Types
+
+Containing type type parameters and constraints are preserved on generated overloads.
+
+```csharp
+public sealed class Container where T : class, new()
+{
+ [GenerateOverloads(nameof(optionalObject))]
+ public void Create(T value, object? optionalObject) \{ }
+}
+```
+
+Generated overloads keep `T` and its constraints.
+
+###### MSBuild Options
+
+Emit attributes only (skip generation and diagnostics):
+```xml
+
+ true
+
+```
+
+###### Diagnostics
+
+Diagnostics are reported by the analyzer and surfaced during build:
+
+- `MOG001` Invalid window anchor.
+- `MOG002` Matcher has no subsequence match.
+- `MOG003` Defaults inside window.
+- `MOG004` Params outside window.
+- `MOG005` Ref/out/in omitted.
+- `MOG006` Duplicate signature skipped.
+- `MOG007` Conflicting window anchors (BeginEnd vs Begin/End).
+- `MOG008` Redundant Begin and End.
+- `MOG009` Begin and BeginExclusive conflict.
+- `MOG010` End and EndExclusive conflict.
+- `MOG011` Parameterless target method.
+- `MOG012` Matchers + window anchors conflict.
+- `MOG013` Invalid bucket type.
+- `MOG014` Invalid SupplyParameterType usage.
+- `MOG015` SupplyParameterType refers to missing type parameter.
+- `MOG016` Conflicting SupplyParameterType mappings.
+- `MOG017` Matchers + ExcludeAny conflict.
+- `MOG018` ExcludeAny refers to missing/out-of-window parameter.
+- `MOG019` ExcludeAny contains invalid entries.
+
+You can downgrade error-level diagnostics in `.globalconfig` if you need the project to compile with intentional violations.
+
+###### Generation Rules (Summary)
+
+- Only ordinary, non-private methods are eligible.
+- Window omissions cannot drop `ref/out/in` parameters.
+- `params` must be inside the optional window to be omitted.
+- Existing method signatures are not duplicated.
+- Defaults inside the window are not allowed.
+- Matcher usages are emitted only when the matcher type is at least `internal`.
+
+###### Docs
+
+See `docs/generator.md` for detailed behavior and `docs/acceptance-criterias.md` for the acceptance project structure.
+
+
+:::
+
+### About
+:::note
+
+generate overloads of the same method
+
+
+:::
+
+## How to use
+
+### Example (source csproj, source files)
+
+
+
+
+
+This is the CSharp Project that references **Tenekon.MethodOverloads.SourceGenerator**
+```xml showLineNumbers {11}
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+ true
+ $(BaseIntermediateOutputPath)\GX
+
+
+
+
+```
+
+
+
+
+
+ This is the use of **Tenekon.MethodOverloads.SourceGenerator** in *Person.cs*
+
+```csharp showLineNumbers
+namespace overloadMethod;
+
+public class Person
+{
+ public string FirstName \{ get; set; \} = string.Empty;
+ public string LastName \{ get; set; \} = string.Empty;
+
+ [Tenekon.MethodOverloads.GenerateOverloads(Begin = nameof(MiddleName))]
+ public string FullName(string MiddleName, bool ToLowerCase)
+ {
+ var fullName = $"{FirstName} {MiddleName} {LastName}";
+ return ToLowerCase ? fullName.ToLower() : fullName;
+ }
+}
+
+```
+
+
+
+
+ This is the use of **Tenekon.MethodOverloads.SourceGenerator** in *Program.cs*
+
+```csharp showLineNumbers
+using overloadMethod;
+
+Person p = new();
+p.FirstName= "Andrei";
+p.LastName = "Ignat";
+
+Console.WriteLine(p.FullName());
+
+```
+
+
+
+
+### Generated Files
+
+Those are taken from $(BaseIntermediateOutputPath)\GX
+
+
+
+
+```csharp showLineNumbers
+namespace Microsoft.CodeAnalysis;
+
+internal sealed partial class EmbeddedAttribute : global::System.Attribute;
+```
+
+
+
+
+```csharp showLineNumbers
+#nullable enable
+namespace Tenekon.MethodOverloads;
+
+[global::Microsoft.CodeAnalysis.Embedded]
+[global::System.AttributeUsage(
+ global::System.AttributeTargets.Class
+ | global::System.AttributeTargets.Struct
+ | global::System.AttributeTargets.Interface,
+ AllowMultiple = true)]
+internal sealed class GenerateMethodOverloadsAttribute : global::System.Attribute
+{
+ public global::System.Type[]? Matchers \{ get; set; }
+}
+
+```
+
+
+
+
+```csharp showLineNumbers
+#nullable enable
+namespace Tenekon.MethodOverloads;
+
+[global::Microsoft.CodeAnalysis.Embedded]
+[global::System.AttributeUsage(global::System.AttributeTargets.Method, AllowMultiple = true)]
+internal sealed class GenerateOverloadsAttribute : global::System.Attribute
+{
+ public GenerateOverloadsAttribute()
+ {
+ }
+
+ public GenerateOverloadsAttribute(string beginEnd)
+ {
+ Begin = beginEnd;
+ End = beginEnd;
+ }
+
+ ///
+ /// All parameters beginning from (inclusive) are considered for optional or required.
+ ///
+ public string? Begin \{ get; set; }
+
+ ///
+ /// All parameters after are considered for optional or required.
+ ///
+ public string? BeginExclusive \{ get; set; }
+
+ ///
+ /// All parameters before are considered for optional or required.
+ ///
+ public string? EndExclusive \{ get; set; }
+
+ ///
+ /// All parameters until (inclusive) are considered for optional or required.
+ ///
+ public string? End \{ get; set; }
+
+ ///
+ /// Parameters listed here are always omitted from generated overloads within the resolved window.
+ ///
+ public string[]? ExcludeAny \{ get; set; }
+
+ public global::System.Type[]? Matchers \{ get; set; }
+}
+
+```
+
+
+
+
+```csharp showLineNumbers
+#nullable enable
+namespace Tenekon.MethodOverloads;
+
+[global::Microsoft.CodeAnalysis.Embedded]
+[global::System.AttributeUsage(global::System.AttributeTargets.Class, AllowMultiple = true)]
+internal sealed class MatcherUsageAttribute : global::System.Attribute
+{
+ public MatcherUsageAttribute(string methodName)
+ {
+ }
+}
+```
+
+
+
+
+```csharp showLineNumbers
+//
+#nullable enable
+
+namespace overloadMethod;
+
+public static class MethodOverloads
+{
+ public static string FullName(this global::overloadMethod.Person source, bool ToLowerCase) => source.FullName(default(string), ToLowerCase);
+ public static string FullName(this global::overloadMethod.Person source, string MiddleName) => source.FullName(MiddleName, default(bool));
+ public static string FullName(this global::overloadMethod.Person source) => source.FullName(default(string), default(bool));
+}
+
+```
+
+
+
+
+```csharp showLineNumbers
+#nullable enable
+namespace Tenekon.MethodOverloads;
+
+[global::Microsoft.CodeAnalysis.Embedded]
+internal enum RangeAnchorMatchMode
+{
+ TypeOnly,
+ TypeAndName
+}
+
+[global::Microsoft.CodeAnalysis.Embedded]
+internal enum OverloadSubsequenceStrategy
+{
+ PrefixOnly,
+ UniqueBySignature
+}
+
+[global::Microsoft.CodeAnalysis.Embedded]
+internal enum OverloadVisibility
+{
+ MatchTarget,
+ Public,
+ Internal,
+ Private
+}
+
+[global::Microsoft.CodeAnalysis.Embedded]
+[global::System.AttributeUsage(
+ global::System.AttributeTargets.Class | global::System.AttributeTargets.Struct
+ | global::System.AttributeTargets.Interface | global::System.AttributeTargets.Method)]
+internal sealed class OverloadGenerationOptionsAttribute : global::System.Attribute
+{
+ public RangeAnchorMatchMode RangeAnchorMatchMode \{ get; set; }
+ public OverloadSubsequenceStrategy SubsequenceStrategy \{ get; set; }
+ public OverloadVisibility OverloadVisibility \{ get; set; }
+ public global::System.Type? BucketType \{ get; set; }
+}
+```
+
+
+
+
+```csharp showLineNumbers
+#nullable enable
+namespace Tenekon.MethodOverloads;
+
+[global::Microsoft.CodeAnalysis.Embedded]
+[global::System.AttributeUsage(
+ global::System.AttributeTargets.Method
+ | global::System.AttributeTargets.Class
+ | global::System.AttributeTargets.Interface,
+ AllowMultiple = true)]
+internal sealed class SupplyParameterTypeAttribute : global::System.Attribute
+{
+ public SupplyParameterTypeAttribute(string typeParameterName, global::System.Type suppliedType)
+ {
+ TypeParameterName = typeParameterName;
+ SuppliedType = suppliedType;
+ }
+
+ public string TypeParameterName \{ get; }
+
+ public global::System.Type SuppliedType \{ get; }
+
+ public object? Group \{ get; set; }
+}
+
+```
+
+
+
+
+## Useful
+
+### Download Example (.NET C#)
+
+:::tip
+
+[Download Example project Tenekon.MethodOverloads.SourceGenerator ](/sources/Tenekon.MethodOverloads.SourceGenerator.zip)
+
+:::
+
+
+### Share Tenekon.MethodOverloads.SourceGenerator
+
+
+
+https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator
+
+
+
diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/index.md b/v2/rscg_examples_site/docs/RSCG-Examples/index.md
index ce4011d19..e8e8c5946 100644
--- a/v2/rscg_examples_site/docs/RSCG-Examples/index.md
+++ b/v2/rscg_examples_site/docs/RSCG-Examples/index.md
@@ -1,7 +1,7 @@
---
sidebar_position: 30
-title: 290 RSCG list by category
-description: 290 RSCG list by category
+title: 291 RSCG list by category
+description: 291 RSCG list by category
slug: /rscg-examples
---
@@ -578,7 +578,7 @@ import DocCardList from '@theme/DocCardList';
## EnhancementClass
- Expand EnhancementClass =>examples:32
+ Expand EnhancementClass =>examples:33
@@ -739,6 +739,11 @@ import DocCardList from '@theme/DocCardList';
[AOP.Logging.SourceGenerator](/docs/AOP.Logging.SourceGenerator)
+
+
+
+[Tenekon.MethodOverloads.SourceGenerator](/docs/Tenekon.MethodOverloads.SourceGenerator)
+
@@ -2035,6 +2040,8 @@ flowchart LR;
EnhancementClass--> AOP.Logging.SourceGenerator((AOP.Logging.SourceGenerator))
+ EnhancementClass--> Tenekon.MethodOverloads.SourceGenerator((Tenekon.MethodOverloads.SourceGenerator))
+
EnhancementProject--> ThisAssembly((ThisAssembly))
EnhancementProject--> RSCG_TimeBombComment((RSCG_TimeBombComment))
diff --git a/v2/rscg_examples_site/docs/about.md b/v2/rscg_examples_site/docs/about.md
index f007c661e..ed02bde66 100644
--- a/v2/rscg_examples_site/docs/about.md
+++ b/v2/rscg_examples_site/docs/about.md
@@ -6,7 +6,7 @@ title: About
## Content
You will find here code examples
-of 290 Roslyn Source Code Generator (RSCG)
+of 291 Roslyn Source Code Generator (RSCG)
that can be useful for you. That means, you will write more elegant and concise code - even if the generators code is not always nice to look.
## Are those examples ready for production?
diff --git a/v2/rscg_examples_site/docs/indexRSCG.md b/v2/rscg_examples_site/docs/indexRSCG.md
index f5a487448..f84cd5596 100644
--- a/v2/rscg_examples_site/docs/indexRSCG.md
+++ b/v2/rscg_examples_site/docs/indexRSCG.md
@@ -7,9 +7,9 @@ slug: /List-of-RSCG
import useBaseUrl from '@docusaurus/useBaseUrl';
-## 290 RSCG with examples in descending chronological order
+## 291 RSCG with examples in descending chronological order
-This is the list of 290 ( 16 from Microsoft) RSCG with examples
+This is the list of 291 ( 16 from Microsoft) RSCG with examples
[See by category](/docs/rscg-examples) [See as json](/exports/RSCG.json) [See as Excel](/exports/RSCG.xlsx)
@@ -20,6 +20,7 @@ This is the list of 290 ( 16 from Microsoft) RSCG with examples
| No | Name | Date | Category |
| --------- | ----- | ---- | -------- |
+|291| [Tenekon.MethodOverloads.SourceGenerator by Tenekon ](/docs/Tenekon.MethodOverloads.SourceGenerator)|2026-09-05 => 05 September 2026 | [EnhancementClass](/docs/Categories/EnhancementClass) |
|290| [MagicConstants by Liesel Thuriot ](/docs/MagicConstants)|2026-09-04 => 04 September 2026 | [FilesToCode](/docs/Categories/FilesToCode) |
|289| [AOP.Logging.SourceGenerator by Dietmar Borgards ](/docs/AOP.Logging.SourceGenerator)|2026-08-30 => 30 August 2026 | [EnhancementClass](/docs/Categories/EnhancementClass) |
|288| [Najlot.Map.SourceGenerator by Najlot ](/docs/Najlot.Map.SourceGenerator)|2026-08-29 => 29 August 2026 | [Mapper](/docs/Categories/Mapper) |
diff --git a/v2/rscg_examples_site/src/components/HomepageFeatures/index.js b/v2/rscg_examples_site/src/components/HomepageFeatures/index.js
index eb462c613..ee8b46d91 100644
--- a/v2/rscg_examples_site/src/components/HomepageFeatures/index.js
+++ b/v2/rscg_examples_site/src/components/HomepageFeatures/index.js
@@ -4,7 +4,7 @@ import styles from './styles.module.css';
const FeatureList = [
{
-title: '290 Examples (16 from MSFT)',
+title: '291 Examples (16 from MSFT)',
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
description: (
<>
diff --git a/v2/rscg_examples_site/static/exports/RSCG.json b/v2/rscg_examples_site/static/exports/RSCG.json
index 96c53f651..a861e262b 100644
--- a/v2/rscg_examples_site/static/exports/RSCG.json
+++ b/v2/rscg_examples_site/static/exports/RSCG.json
@@ -2321,6 +2321,14 @@
"Source": "https://github.com/LieselThuriot/MagicConstants",
"Category": "FilesToCode",
"AddedOn": "2026-09-04T00:00:00"
+ },
+ {
+ "Name": "Tenekon.MethodOverloads.SourceGenerator",
+ "Link": "https://ignatandrei.github.io/RSCG_Examples/v2/docs/Tenekon.MethodOverloads.SourceGenerator",
+ "NuGet": "https://www.nuget.org/packages/Tenekon.MethodOverloads.SourceGenerator/",
+ "Source": "https://github.com/tenekon/Tenekon.MethodOverloads.SourceGenerator",
+ "Category": "EnhancementClass",
+ "AddedOn": "2026-09-05T00:00:00"
}
]
}
\ No newline at end of file
diff --git a/v2/rscg_examples_site/static/exports/RSCG.xlsx b/v2/rscg_examples_site/static/exports/RSCG.xlsx
index 38ef93dc9..0f723c49b 100644
Binary files a/v2/rscg_examples_site/static/exports/RSCG.xlsx and b/v2/rscg_examples_site/static/exports/RSCG.xlsx differ
diff --git a/v2/rscg_examples_site/static/sources/Tenekon.MethodOverloads.SourceGenerator.zip b/v2/rscg_examples_site/static/sources/Tenekon.MethodOverloads.SourceGenerator.zip
new file mode 100644
index 000000000..7af471680
Binary files /dev/null and b/v2/rscg_examples_site/static/sources/Tenekon.MethodOverloads.SourceGenerator.zip differ