Skip to content

Comments

Add State Pattern source generator with deterministic transitions, comprehensive documentation and examples#117

Merged
JerrettDavis merged 9 commits intomainfrom
copilot/create-state-pattern-generator
Feb 14, 2026
Merged

Add State Pattern source generator with deterministic transitions, comprehensive documentation and examples#117
JerrettDavis merged 9 commits intomainfrom
copilot/create-state-pattern-generator

Conversation

Copy link
Contributor

Copilot AI commented Feb 13, 2026

Implements a complete source generator for the State pattern as a deterministic finite state machine. The generator produces self-contained code with no runtime dependencies, using enum-based states/triggers and ValueTask for async operations.

Architecture

Attributes (PatternKit.Generators.Abstractions/State)

  • [StateMachine(stateType, triggerType)] - Marks host type, configures method names and policies
  • [StateTransition(From, Trigger, To)] - Defines state transitions on methods
  • [StateGuard(From, Trigger)] - Guards transitions with bool/ValueTask conditions
  • [StateEntry(state)] / [StateExit(state)] - Lifecycle hooks

Generator (PatternKit.Generators/StateMachineGenerator.cs)

  • Validates unique transitions per (FromState, Trigger) pair
  • Execution order: Exit hooks → Transition action → State update → Entry hooks
  • Generates Fire/FireAsync/CanFire methods with configurable failure policies
  • Handles CancellationToken propagation for async paths
  • 10 diagnostics (PKST001-PKST010) for validation

Usage

public enum OrderState { Draft, Submitted, Paid, Shipped }
public enum OrderTrigger { Submit, Pay, Ship }

[StateMachine(typeof(OrderState), typeof(OrderTrigger))]
public partial class OrderFlow
{
    [StateTransition(From = OrderState.Draft, Trigger = OrderTrigger.Submit, To = OrderState.Submitted)]
    private void OnSubmit() { }

    [StateGuard(From = OrderState.Submitted, Trigger = OrderTrigger.Pay)]
    private bool CanPay() => Amount > 0;

    [StateTransition(From = OrderState.Submitted, Trigger = OrderTrigger.Pay, To = OrderState.Paid)]
    private async ValueTask OnPayAsync(CancellationToken ct) { await ProcessPayment(ct); }

    [StateExit(OrderState.Paid)]
    private void OnExitPaid() { /* finalize payment */ }
}

// Generated API:
// public OrderState State { get; private set; }
// public bool CanFire(OrderTrigger trigger)
// public void Fire(OrderTrigger trigger)
// public ValueTask FireAsync(OrderTrigger trigger, CancellationToken ct = default)

Implementation Notes

  • Determinism: Transitions are resolved uniquely by (FromState, Trigger). Duplicates are compile errors.
  • Async handling: Sync Fire methods call async hooks via GetAwaiter().GetResult() with CancellationToken.None
  • Guard policies: InvalidTrigger and GuardFailure configurable as Throw/Ignore/ReturnFalse
  • Target support: class, struct, record class, record struct (all partial)
  • V1 scope: States and triggers must be enums. Type-based states deferred to v2.

Review Feedback Addressed

All PR review feedback has been implemented:

  1. String ordering for determinism - Added StringComparer.Ordinal to transition ordering for culture-independent deterministic output
  2. GenerateAsync = false handling - Fixed logic to properly detect when GenerateAsync = false is explicitly set and reports PKST008 diagnostic
  3. Generic and nested type validation - Added PKST009 and PKST010 diagnostics with validation checks
  4. Duplicate transition diagnostics location - Changed from Location.None to actual method source locations
  5. Async guards in CanFire - Async guards now evaluated synchronously with GetAwaiter().GetResult()
  6. Enum value handling - Fixed GetEnumValueName to handle all enum underlying types
  7. Guards with CancellationToken - Fixed sync guards with CT parameters to pass CancellationToken.None
  8. Updated diagnostics registry - Added PKST009 and PKST010 to AnalyzerReleases.Unshipped.md

Documentation and Examples

Comprehensive Documentation (docs/generators/state-machine.md - 25KB+)

  • Quick start guide with step-by-step examples
  • Core features: guards, entry/exit hooks, async support
  • Configuration options and error handling policies
  • Real-world examples: Order Processing and Document Approval workflows
  • Best practices, performance considerations, and migration guide
  • Complete FAQ and diagnostics reference (PKST001-PKST010)

Examples README (src/PatternKit.Examples/Generators/State/README.md - 13KB+)

  • Comprehensive walkthrough of State Machine Pattern Generator
  • Key concepts with code samples
  • Usage patterns: check before fire, async workflows, state-based logic, transition history
  • Common scenarios: happy path, validation failure, cancellation, async timeout
  • Unit and integration testing examples
  • Best practices and troubleshooting guide

Expanded Real-World Examples (OrderFlowDemo.cs)

  • OrderFlow - Order processing state machine with 5 demonstration scenarios:
    • Run() - Happy path order processing
    • CancellationDemo() - Order cancellation from multiple states
    • GuardFailureDemo() - Business rule validation
    • AsyncCancellationDemo() - Timeout handling with CancellationToken
    • StateBasedLogicDemo() - Dynamic action discovery based on state
  • DocumentWorkflow - Document approval workflow demonstrating multi-step approval process with revision cycle
  • Comprehensive XML documentation and helper methods (GetStateDescription(), GetAvailableTriggers())

Testing

Added 26 comprehensive tests covering:

  • All target types (class, struct, record class, record struct)
  • Async paths with ValueTask
  • Guards and policies
  • Entry/Exit hooks
  • All diagnostics (PKST001-PKST010)
  • GenerateAsync configuration scenarios
  • CancellationToken handling

Full test suite: 1,957 tests passing with no regressions.

Original prompt

This section details on the original issue you should resolve

<issue_title>Generator: Create State Pattern</issue_title>
<issue_description>## Summary

Add a source generator that produces a complete implementation of the State pattern as a deterministic state machine with:

  • explicit states and triggers
  • deterministic transitions
  • optional guards
  • optional entry/exit hooks
  • sync + async support (favor ValueTask)

The generator lives in PatternKit.Generators and emits self-contained C# with no runtime PatternKit dependency.


Motivation / Problem

State pattern implementations tend to devolve into:

  • giant switch statements
  • scattered transition rules
  • inconsistent guard behavior
  • unclear concurrency/ordering

We want a generator that produces:

  • explicit, readable transition tables
  • deterministic semantics
  • actionable diagnostics
  • predictable performance (no reflection, minimal allocations)

Supported Targets (must-have)

The generator must support:

  • partial class
  • partial struct
  • partial record class
  • partial record struct

The annotated type represents the state machine host, exposing Fire(...) / FireAsync(...) and a State property.


Proposed User Experience

A) Enum-based states/triggers

public enum OrderState { Draft, Submitted, Paid, Shipped, Cancelled }
public enum OrderTrigger { Submit, Pay, Ship, Cancel }

[StateMachine(typeof(OrderState), typeof(OrderTrigger))]
public partial class OrderFlow
{
    [StateTransition(From = OrderState.Draft, Trigger = OrderTrigger.Submit, To = OrderState.Submitted)]
    private void OnSubmit();

    [StateGuard(From = OrderState.Submitted, Trigger = OrderTrigger.Pay)]
    private bool CanPay() => true;

    [StateTransition(From = OrderState.Submitted, Trigger = OrderTrigger.Pay, To = OrderState.Paid)]
    private ValueTask OnPayAsync(CancellationToken ct);

    [StateEntry(OrderState.Shipped)]
    private void OnEnterShipped();

    [StateExit(OrderState.Paid)]
    private void OnExitPaid();
}

Generated (representative shape):

public partial class OrderFlow
{
    public OrderState State { get; private set; }

    public bool CanFire(OrderTrigger trigger);

    public void Fire(OrderTrigger trigger);
    public ValueTask FireAsync(OrderTrigger trigger, CancellationToken ct = default);
}

B) Type-based states (optional v2)

V1 scope can restrict states/triggers to enums for simplicity and performance.


Attributes / Surface Area

Namespace: PatternKit.Generators.State

Core

  • [StateMachine(Type stateType, Type triggerType)] on the host

    • string FireMethodName = "Fire"
    • string FireAsyncMethodName = "FireAsync"
    • string CanFireMethodName = "CanFire"
    • bool GenerateAsync (default: inferred)
    • bool ForceAsync (default: false)
    • StateMachineInvalidTriggerPolicy InvalidTrigger (default: Throw)
    • StateMachineGuardFailurePolicy GuardFailure (default: Throw)
  • [StateTransition] on methods that execute on a transition

    • TState From
    • TTrigger Trigger
    • TState To
  • [StateGuard] on methods that determine whether a transition is allowed

    • From, Trigger
  • [StateEntry] / [StateExit] on hook methods

    • TState State

Policies:

  • InvalidTriggerPolicy: Throw | Ignore | ReturnFalse (if using TryFire)
  • GuardFailurePolicy: Throw | Ignore | ReturnFalse

Semantics (must-have)

Deterministic transition resolution

  • A transition is uniquely identified by (FromState, Trigger).
  • Duplicate transitions are an error.

Guard evaluation

  • If a guard exists for (FromState, Trigger):

    • evaluate guard first
    • if guard fails, apply GuardFailurePolicy

Execution order

When a transition occurs:

  1. Exit hooks for FromState (if any)
  2. Transition action method ([StateTransition]) (if any)
  3. Update State = ToState
  4. Entry hooks for ToState (if any)

This order is deterministic and must be documented.

Async

  • If any transition action or entry/exit hook is async (ValueTask), generate FireAsync.
  • Prefer ValueTask across generated signatures.
  • Cancellation token passed through to async hooks when applicable.

Concurrency

V1 scope:

  • Not thread-safe by default.
  • Optional Locking mode can be added later. If we include in v1, it must be explicit and tested.

Diagnostics (must-have)

Stable IDs, actionable:

  • PKST001 Type marked [StateMachine] must be partial.
  • PKST002 State type must be an enum (v1).
  • PKST003 Trigger type must be an enum (v1).
  • PKST004 Duplicate transition detected for (From, Trigger).
  • PKST005 Transition method signature invalid.
  • PKST006 Guard method signature invalid (must return bool / ValueTask if async guards supported).
  • PKST007 Entry/Exit hook signature invalid.
  • PKST008 Async method detected but async generation disabled; enable GenerateAsync/ForceAsync.

#...


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 6 commits February 13, 2026 20:07
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
… Examples project)

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Copilot AI changed the title [WIP] Add source generator for State pattern implementation Add State Pattern source generator with deterministic transitions Feb 13, 2026
Copilot AI requested a review from JerrettDavis February 13, 2026 20:21
@JerrettDavis JerrettDavis requested a review from Copilot February 14, 2026 01:29
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new deterministic State Pattern source generator to PatternKit, enabling enum-based finite state machines via attributes with generated State, CanFire, Fire, and optional FireAsync APIs.

Changes:

  • Introduces StateMachineGenerator incremental generator that collects transitions/guards/entry-exit hooks and emits generated state machine code.
  • Adds State generator attribute surface area (StateMachine, StateTransition, StateGuard, StateEntry, StateExit) plus policy enums and diagnostics registration.
  • Adds comprehensive unit tests and an examples demo for the new generator.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
test/PatternKit.Generators.Tests/StateMachineGeneratorTests.cs Adds coverage for state machine generation across target types, hooks/guards, and core diagnostics.
src/PatternKit.Generators/StateMachineGenerator.cs Implements the new State pattern source generator, diagnostics, validation, and code emission.
src/PatternKit.Generators/AnalyzerReleases.Unshipped.md Registers new PKST001–PKST008 diagnostics for the State generator.
src/PatternKit.Generators.Abstractions/State/StateTransitionAttribute.cs Adds transition attribute to declare (From, Trigger) -> To edges.
src/PatternKit.Generators.Abstractions/State/StateMachineAttribute.cs Adds host attribute and policy configuration enums for generation.
src/PatternKit.Generators.Abstractions/State/StateGuardAttribute.cs Adds guard attribute for conditional transitions.
src/PatternKit.Generators.Abstractions/State/StateExitAttribute.cs Adds state exit hook attribute.
src/PatternKit.Generators.Abstractions/State/StateEntryAttribute.cs Adds state entry hook attribute.
src/PatternKit.Examples/Generators/State/OrderFlowDemo.cs Adds an end-to-end demo of the generated API and lifecycle ordering.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@JerrettDavis
Copy link
Owner

@copilot apply changes based on the comments in this thread

@JerrettDavis
Copy link
Owner

@copilot this PR should also include the real-world demos and comprehensive users-docs as present for our other generators.

… handling, add tests

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
…ne generator

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 14, 2026

@copilot this PR should also include the real-world demos and comprehensive users-docs as present for our other generators.

Added comprehensive documentation and examples in commit abe2239:

Documentation:

  • 25KB+ generator documentation (docs/generators/state-machine.md) covering all features, examples, best practices, FAQ, and diagnostics
  • 13KB+ examples README (src/PatternKit.Examples/Generators/State/README.md) with usage patterns, testing examples, and troubleshooting
  • Updated TOC with State Machine entry

Examples:

  • Expanded OrderFlowDemo.cs with 5 demonstration scenarios (happy path, cancellation, guard failure, async timeout, state-based logic)
  • Added DocumentWorkflow example showing document approval workflow
  • Comprehensive XML documentation and helper methods
  • Real-world scenarios matching other generators' quality

All documentation and examples are now at the same level as other PatternKit generators.

Copilot AI changed the title Add State Pattern source generator with deterministic transitions Add State Pattern source generator with deterministic transitions, comprehensive documentation and examples Feb 14, 2026
@JerrettDavis JerrettDavis requested a review from Copilot February 14, 2026 04:55
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 12 out of 12 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@JerrettDavis JerrettDavis marked this pull request as ready for review February 14, 2026 05:33
@github-actions
Copy link
Contributor

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions
Copy link
Contributor

Test Results

398 tests   398 ✅  2m 49s ⏱️
  1 suites    0 💤
  1 files      0 ❌

Results for commit abe2239.

@github-actions
Copy link
Contributor

Code Coverage

Summary
  Generated on: 02/14/2026 - 05:36:40
  Coverage date: 02/14/2026 - 05:35:40 - 02/14/2026 - 05:36:34
  Parser: MultiReport (9x Cobertura)
  Assemblies: 4
  Classes: 439
  Files: 306
  Line coverage: 77.8%
  Covered lines: 16385
  Uncovered lines: 4670
  Coverable lines: 21055
  Total lines: 52518
  Branch coverage: 69.2% (5462 of 7886)
  Covered branches: 5462
  Total branches: 7886
  Method coverage: 74.6% (2866 of 3838)
  Full method coverage: 67.8% (2606 of 3838)
  Covered methods: 2866
  Fully covered methods: 2606
  Total methods: 3838

PatternKit.Core                                                                                                   96.8%
  PatternKit.Behavioral.Chain.ActionChain<T>                                                                       100%
  PatternKit.Behavioral.Chain.AsyncActionChain<T>                                                                  100%
  PatternKit.Behavioral.Chain.AsyncResultChain<T1, T2>                                                            97.7%
  PatternKit.Behavioral.Chain.ResultChain<T1, T2>                                                                  100%
  PatternKit.Behavioral.Command.Command<T>                                                                         100%
  PatternKit.Behavioral.Interpreter.ActionInterpreter                                                              100%
  PatternKit.Behavioral.Interpreter.ActionInterpreter<T>                                                          96.9%
  PatternKit.Behavioral.Interpreter.ActionInterpreterBuilder<T>                                                    100%
  PatternKit.Behavioral.Interpreter.AsyncActionInterpreter                                                         100%
  PatternKit.Behavioral.Interpreter.AsyncActionInterpreter<T>                                                      100%
  PatternKit.Behavioral.Interpreter.AsyncActionInterpreterBuilder<T>                                               100%
  PatternKit.Behavioral.Interpreter.AsyncInterpreter                                                               100%
  PatternKit.Behavioral.Interpreter.AsyncInterpreter<T1, T2>                                                      96.8%
  PatternKit.Behavioral.Interpreter.AsyncInterpreterBuilder<T1, T2>                                                100%
  PatternKit.Behavioral.Interpreter.Builder<T1, T2>                                                                 96%
  PatternKit.Behavioral.Interpreter.ExpressionExtensions                                                           100%
  PatternKit.Behavioral.Interpreter.Interpreter                                                                    100%
  PatternKit.Behavioral.Interpreter.Interpreter<T1, T2>                                                           96.6%
  PatternKit.Behavioral.Interpreter.NonTerminalExpression                                                          100%
  PatternKit.Behavioral.Interpreter.TerminalExpression                                                             100%
  PatternKit.Behavioral.Iterator.AsyncFlow<T>                                                                      100%
  PatternKit.Behavioral.Iterator.AsyncFlowExtensions                                                               100%
  PatternKit.Behavioral.Iterator.AsyncReplayBuffer<T>                                                             93.9%
  PatternKit.Behavioral.Iterator.Flow<T>                                                                          94.4%
  PatternKit.Behavioral.Iterator.FlowExtensions                                                                    100%
  PatternKit.Behavioral.Iterator.ReplayableSequence<T>                                                            98.2%
  PatternKit.Behavioral.Iterator.ReplayableSequenceExtensions                                                      100%
  PatternKit.Behavioral.Iterator.SharedAsyncFlow<T>                                                                100%
  PatternKit.Behavioral.Iterator.SharedFlow<T>                                                                     100%
  PatternKit.Behavioral.Iterator.WindowSequence                                                                    100%
  PatternKit.Behavioral.Mediator.Mediator                                                                         91.9%
  PatternKit.Behavioral.Mediator.MediatorHelpers                                                                   100%
  PatternKit.Behavioral.Mediator.TaskExtensions                                                                    100%
  PatternKit.Behavioral.Memento.Memento<T>                                                                         100%
  PatternKit.Behavioral.Observer.AsyncObserver<T>                                                                 98.7%
  PatternKit.Behavioral.Observer.Observer<T>                                                                      98.2%
  PatternKit.Behavioral.State.AsyncStateMachine<T1, T2>                                                             95%
  PatternKit.Behavioral.State.StateMachine<T1, T2>                                                                  99%
  PatternKit.Behavioral.Strategy.ActionStrategy<T>                                                                  97%
  PatternKit.Behavioral.Strategy.AsyncActionStrategy<T>                                                            100%
  PatternKit.Behavioral.Strategy.AsyncStrategy<T1, T2>                                                             100%
  PatternKit.Behavioral.Strategy.Strategy<T1, T2>                                                                  100%
  PatternKit.Behavioral.Strategy.TryStrategy<T1, T2>                                                              95.8%
  PatternKit.Behavioral.Template.ActionTemplate<T>                                                                 100%
  PatternKit.Behavioral.Template.AsyncActionTemplate<T>                                                            100%
  PatternKit.Behavioral.Template.AsyncTemplate<T1, T2>                                                            97.1%
  PatternKit.Behavioral.Template.AsyncTemplateMethod<T1, T2>                                                       100%
  PatternKit.Behavioral.Template.Template<T1, T2>                                                                  100%
  PatternKit.Behavioral.Template.TemplateMethod<T1, T2>                                                            100%
  PatternKit.Behavioral.TypeDispatcher.ActionTypeDispatcher<T>                                                    91.4%
  PatternKit.Behavioral.TypeDispatcher.AsyncActionTypeDispatcher<T>                                               94.5%
  PatternKit.Behavioral.TypeDispatcher.AsyncTypeDispatcher<T1, T2>                                                94.4%
  PatternKit.Behavioral.TypeDispatcher.TypeDispatcher<T1, T2>                                                      100%
  PatternKit.Behavioral.Visitor.ActionVisitor<T>                                                                  85.7%
  PatternKit.Behavioral.Visitor.ActionVisitorBase<T>                                                               100%
  PatternKit.Behavioral.Visitor.AsyncActionVisitor<T>                                                             94.5%
  PatternKit.Behavioral.Visitor.AsyncFluentActionVisitor<T>                                                        100%
  PatternKit.Behavioral.Visitor.AsyncFluentVisitor<T1, T2>                                                         100%
  PatternKit.Behavioral.Visitor.AsyncVisitor<T1, T2>                                                              86.1%
  PatternKit.Behavioral.Visitor.FluentActionVisitor<T>                                                             100%
  PatternKit.Behavioral.Visitor.FluentVisitor<T1, T2>                                                              100%
  PatternKit.Behavioral.Visitor.Visitor<T1, T2>                                                                   91.1%
  PatternKit.Behavioral.Visitor.VisitorBase<T1, T2>                                                                100%
  PatternKit.Common.Option<T>                                                                                      100%
  PatternKit.Common.Throw                                                                                          100%
  PatternKit.Common.TryHandlerExtensions                                                                           100%
  PatternKit.Creational.AbstractFactory.AbstractFactory<T>                                                        91.6%
  PatternKit.Creational.Builder.BranchBuilder<T1, T2>                                                              100%
  PatternKit.Creational.Builder.BuilderExtensions                                                                  100%
  PatternKit.Creational.Builder.ChainBuilder<T>                                                                    100%
  PatternKit.Creational.Builder.Composer<T1, T2>                                                                   100%
  PatternKit.Creational.Builder.MutableBuilder<T>                                                                  100%
  PatternKit.Creational.Factory.Factory<T1, T2>                                                                   92.3%
  PatternKit.Creational.Factory.Factory<T1, T2, T3>                                                               92.3%
  PatternKit.Creational.Prototype.Prototype<T>                                                                     100%
  PatternKit.Creational.Prototype.Prototype<T1, T2>                                                                 90%
  PatternKit.Creational.Singleton.Singleton<T>                                                                    96.5%
  PatternKit.Structural.Adapter.Adapter<T1, T2>                                                                    100%
  PatternKit.Structural.Adapter.AsyncAdapter<T1, T2>                                                               100%
  PatternKit.Structural.Bridge.ActionBridge<T1, T2>                                                               90.9%
  PatternKit.Structural.Bridge.AsyncActionBridge<T1, T2>                                                          96.5%
  PatternKit.Structural.Bridge.AsyncBridge<T1, T2, T3>                                                            90.6%
  PatternKit.Structural.Bridge.Bridge<T1, T2, T3>                                                                  100%
  PatternKit.Structural.Composite.ActionComposite<T>                                                               100%
  PatternKit.Structural.Composite.AsyncActionComposite<T>                                                          100%
  PatternKit.Structural.Composite.AsyncComposite<T1, T2>                                                          97.8%
  PatternKit.Structural.Composite.Composite<T1, T2>                                                               97.3%
  PatternKit.Structural.Decorator.ActionDecorator<T>                                                               100%
  PatternKit.Structural.Decorator.AsyncActionDecorator<T>                                                          100%
  PatternKit.Structural.Decorator.AsyncDecorator<T1, T2>                                                            98%
  PatternKit.Structural.Decorator.Decorator<T1, T2>                                                               97.6%
  PatternKit.Structural.Facade.Facade<T1, T2>                                                                     88.8%
  PatternKit.Structural.Facade.TypedFacade<T>                                                                     79.4%
  PatternKit.Structural.Facade.TypedFacadeDispatchProxy<T>                                                        81.8%
  PatternKit.Structural.Facade.TypedFacadeProxyFactory<T>                                                          100%
  PatternKit.Structural.Flyweight.Flyweight<T1, T2>                                                                100%
  PatternKit.Structural.Proxy.ActionProxy<T>                                                                       100%
  PatternKit.Structural.Proxy.AsyncActionProxy<T>                                                                  100%
  PatternKit.Structural.Proxy.AsyncProxy<T1, T2>                                                                  98.6%
  PatternKit.Structural.Proxy.Proxy<T1, T2>                                                                       98.8%

PatternKit.Examples                                                                                               57.9%
  PatternKit.Examples.AbstractFactoryDemo.AbstractFactoryDemo                                                     98.2%
  PatternKit.Examples.AdapterGeneratorDemo.ClockAdapterMappings                                                    100%
  PatternKit.Examples.AdapterGeneratorDemo.ConsoleLoggerAdapter                                                    100%
  PatternKit.Examples.AdapterGeneratorDemo.LegacyConsoleLogger                                                     100%
  PatternKit.Examples.AdapterGeneratorDemo.LegacySystemClock                                                       100%
  PatternKit.Examples.AdapterGeneratorDemo.LoggerAdapterMappings                                                   100%
  PatternKit.Examples.AdapterGeneratorDemo.PaymentResult                                                           100%
  PatternKit.Examples.AdapterGeneratorDemo.PayPalAdapterMappings                                                   100%
  PatternKit.Examples.AdapterGeneratorDemo.PayPalAmount                                                            100%
  PatternKit.Examples.AdapterGeneratorDemo.PayPalPaymentAdapter                                                    100%
  PatternKit.Examples.AdapterGeneratorDemo.PayPalPaymentService                                                    100%
  PatternKit.Examples.AdapterGeneratorDemo.PayPalRefund                                                            100%
  PatternKit.Examples.AdapterGeneratorDemo.PayPalTransaction                                                       100%
  PatternKit.Examples.AdapterGeneratorDemo.RefundResult                                                            100%
  PatternKit.Examples.AdapterGeneratorDemo.StripeAdapterMappings                                                   100%
  PatternKit.Examples.AdapterGeneratorDemo.StripeChargeRequest                                                     100%
  PatternKit.Examples.AdapterGeneratorDemo.StripeChargeResponse                                                    100%
  PatternKit.Examples.AdapterGeneratorDemo.StripePaymentAdapter                                                    100%
  PatternKit.Examples.AdapterGeneratorDemo.StripePaymentClient                                                     100%
  PatternKit.Examples.AdapterGeneratorDemo.StripeRefundResponse                                                    100%
  PatternKit.Examples.AdapterGeneratorDemo.SystemClockAdapter                                                      100%
  PatternKit.Examples.ApiGateway.Demo                                                                             97.9%
  PatternKit.Examples.ApiGateway.MiniRouter                                                                       96.6%
  PatternKit.Examples.ApiGateway.Request                                                                            75%
  PatternKit.Examples.ApiGateway.Response                                                                          100%
  PatternKit.Examples.ApiGateway.Responses                                                                         100%
  PatternKit.Examples.AsyncStateDemo.ConnectionStateDemo                                                          93.5%
  PatternKit.Examples.BridgeDemo.BridgeDemo                                                                       96.7%
  PatternKit.Examples.Chain.AuthLoggingDemo                                                                       95.2%
  PatternKit.Examples.Chain.CardProcessors                                                                         100%
  PatternKit.Examples.Chain.CardTenderStrategy                                                                    77.7%
  PatternKit.Examples.Chain.CashTenderStrategy                                                                     100%
  PatternKit.Examples.Chain.ChainStage                                                                             100%
  PatternKit.Examples.Chain.CharityRoundUpRule                                                                      50%
  PatternKit.Examples.Chain.ConfigDriven.Bundle1OffEach                                                           14.2%
  PatternKit.Examples.Chain.ConfigDriven.CardTender                                                               72.2%
  PatternKit.Examples.Chain.ConfigDriven.Cash2Pct                                                                 16.6%
  PatternKit.Examples.Chain.ConfigDriven.CashTender                                                               90.9%
  PatternKit.Examples.Chain.ConfigDriven.CharityRoundUp                                                            100%
  PatternKit.Examples.Chain.ConfigDriven.ConfigDrivenPipelineBuilderExtensions                                    94.2%
  PatternKit.Examples.Chain.ConfigDriven.ConfigDrivenPipelineDemo                                                  100%
  PatternKit.Examples.Chain.ConfigDriven.Loyalty5Pct                                                                20%
  PatternKit.Examples.Chain.ConfigDriven.NickelCashOnly                                                           77.7%
  PatternKit.Examples.Chain.ConfigDriven.PipelineOptions                                                           100%
  PatternKit.Examples.Chain.Customer                                                                               100%
  PatternKit.Examples.Chain.DeviceBus                                                                              100%
  PatternKit.Examples.Chain.GenericProcessor                                                                       100%
  PatternKit.Examples.Chain.HttpRequest                                                                            100%
  PatternKit.Examples.Chain.IRoundingRule                                                                          100%
  PatternKit.Examples.Chain.LineItem                                                                               100%
  PatternKit.Examples.Chain.MediatedTransactionPipelineDemo                                                        100%
  PatternKit.Examples.Chain.NickelCashOnlyRule                                                                     100%
  PatternKit.Examples.Chain.NoopCharityTracker                                                                     100%
  PatternKit.Examples.Chain.RoundingPipeline                                                                       100%
  PatternKit.Examples.Chain.Tender                                                                                 100%
  PatternKit.Examples.Chain.TenderRouterFactory                                                                   91.3%
  PatternKit.Examples.Chain.TransactionContext                                                                     100%
  PatternKit.Examples.Chain.TransactionPipeline                                                                    100%
  PatternKit.Examples.Chain.TransactionPipelineBuilder                                                            92.3%
  PatternKit.Examples.Chain.TxResult                                                                               100%
  PatternKit.Examples.CompositeDemo.CompositeDemo                                                                  100%
  PatternKit.Examples.Decorators.CachingFileStorage                                                                  0%
  PatternKit.Examples.Decorators.FileStorageDecoratorBase                                                            0%
  PatternKit.Examples.Decorators.FileStorageDecorators                                                               0%
  PatternKit.Examples.Decorators.InMemoryFileStorage                                                                 0%
  PatternKit.Examples.Decorators.LoggingFileStorage                                                                  0%
  PatternKit.Examples.Decorators.RetryFileStorage                                                                    0%
  PatternKit.Examples.Decorators.StorageDecoratorDemo                                                                0%
  PatternKit.Examples.EnterpriseDemo.EnterpriseOrderDemo                                                          97.1%
  PatternKit.Examples.FacadeDemo.FacadeDemo                                                                        100%
  PatternKit.Examples.FlyweightDemo.FlyweightDemo                                                                 96.9%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.BackgroundJobsModule                     100%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.CorporateApp                             100%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.CorporateApplication                    21.4%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.CorporateApplicationBuilder             52.6%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.CorporateApplicationBuilderExtensions   94.7%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.CorporateApplicationDemo                27.2%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.CorporateAppState                        100%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.InMemoryJobScheduler                     100%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.MessagingModule                          100%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.NotificationOptions                        0%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.ObservabilityModule                      100%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.QueueNotificationPublisher               100%
  PatternKit.Examples.Generators.Builders.CorporateApplicationBuilderDemo.SecretsProvider                          100%
  PatternKit.Examples.Generators.Facade.BillingFacade                                                              100%
  PatternKit.Examples.Generators.Facade.BillingFacadeDemo                                                           96%
  PatternKit.Examples.Generators.Facade.BillingHost                                                               96.1%
  PatternKit.Examples.Generators.Facade.BillingResult                                                              100%
  PatternKit.Examples.Generators.Facade.DeliveryEstimator                                                           70%
  PatternKit.Examples.Generators.Facade.Invoice                                                                    100%
  PatternKit.Examples.Generators.Facade.InvoiceService                                                             100%
  PatternKit.Examples.Generators.Facade.NotificationService                                                         50%
  PatternKit.Examples.Generators.Facade.PaymentProcessor                                                            62%
  PatternKit.Examples.Generators.Facade.PaymentRecord                                                              100%
  PatternKit.Examples.Generators.Facade.PaymentResult                                                              100%
  PatternKit.Examples.Generators.Facade.RateCalculator                                                              75%
  PatternKit.Examples.Generators.Facade.RefundResult                                                                40%
  PatternKit.Examples.Generators.Facade.ShippingFacade                                                             100%
  PatternKit.Examples.Generators.Facade.ShippingFacadeDemo                                                         100%
  PatternKit.Examples.Generators.Facade.ShippingHost                                                              90.9%
  PatternKit.Examples.Generators.Facade.ShippingValidator                                                          100%
  PatternKit.Examples.Generators.Facade.TaxService                                                                91.6%
  PatternKit.Examples.Generators.Factories.ApplicationOrchestrator                                                   0%
  PatternKit.Examples.Generators.Factories.BackgroundWorker                                                        100%
  PatternKit.Examples.Generators.Factories.ConsoleMetricsSink                                                      100%
  PatternKit.Examples.Generators.Factories.MemoryCacheProvider                                                     100%
  PatternKit.Examples.Generators.Factories.OrchestratorStepFactory                                                13.4%
  PatternKit.Examples.Generators.Factories.SeedDataStep                                                            100%
  PatternKit.Examples.Generators.Factories.ServiceModuleBootstrap                                                  100%
  PatternKit.Examples.Generators.Factories.ServiceModules                                                           44%
  PatternKit.Examples.Generators.Factories.StartWorkersStep                                                        100%
  PatternKit.Examples.Generators.Factories.WarmCacheStep                                                           100%
  PatternKit.Examples.Generators.Memento.EditorStateDemo                                                             0%
  PatternKit.Examples.Generators.Memento.EditorStateHistory                                                          0%
  PatternKit.Examples.Generators.Memento.EditorStateMemento                                                          0%
  PatternKit.Examples.Generators.Memento.GameStateDemo                                                               0%
  PatternKit.Examples.Generators.Memento.GameStateHistory                                                            0%
  PatternKit.Examples.Generators.Memento.GameStateMemento                                                            0%
  PatternKit.Examples.Generators.State.DocumentWorkflow                                                              0%
  PatternKit.Examples.Generators.State.OrderFlow                                                                     0%
  PatternKit.Examples.Generators.State.OrderFlowDemo                                                                 0%
  PatternKit.Examples.Generators.Strategies.IntParser                                                               60%
  PatternKit.Examples.Generators.Strategies.OrderRouter                                                           95.2%
  PatternKit.Examples.Generators.Strategies.ScoreLabeler                                                           100%
  PatternKit.Examples.Generators.Visitors.Document                                                                   0%
  PatternKit.Examples.Generators.Visitors.DocumentActionVisitorBuilder                                               0%
  PatternKit.Examples.Generators.Visitors.DocumentAsyncActionVisitorBuilder                                          0%
  PatternKit.Examples.Generators.Visitors.DocumentAsyncVisitorBuilder<T>                                             0%
  PatternKit.Examples.Generators.Visitors.DocumentProcessingDemo                                                     0%
  PatternKit.Examples.Generators.Visitors.DocumentVisitorBuilder<T>                                                  0%
  PatternKit.Examples.Generators.Visitors.MarkdownDocument                                                           0%
  PatternKit.Examples.Generators.Visitors.PdfDocument                                                                0%
  PatternKit.Examples.Generators.Visitors.SpreadsheetDocument                                                        0%
  PatternKit.Examples.Generators.Visitors.WordDocument                                                               0%
  PatternKit.Examples.InterpreterDemo.InterpreterDemo                                                             93.1%
  PatternKit.Examples.IteratorDemo.IteratorDemo                                                                   98.8%
  PatternKit.Examples.MediatorDemo.AppMediator                                                                     100%
  PatternKit.Examples.MediatorDemo.AuditLogHandler                                                                 100%
  PatternKit.Examples.MediatorDemo.BoxHelper                                                                        25%
  PatternKit.Examples.MediatorDemo.CountUpCmd                                                                      100%
  PatternKit.Examples.MediatorDemo.CountUpHandler                                                                  100%
  PatternKit.Examples.MediatorDemo.EchoCmd                                                                         100%
  PatternKit.Examples.MediatorDemo.EchoHandler                                                                     100%
  PatternKit.Examples.MediatorDemo.LoggingBehavior<T1, T2>                                                         100%
  PatternKit.Examples.MediatorDemo.MediatorAssemblyScanner                                                         100%
  PatternKit.Examples.MediatorDemo.MediatorDemoSink                                                                100%
  PatternKit.Examples.MediatorDemo.MediatorRegistry                                                                100%
  PatternKit.Examples.MediatorDemo.PingCmd                                                                         100%
  PatternKit.Examples.MediatorDemo.PingHandler                                                                     100%
  PatternKit.Examples.MediatorDemo.ServiceCollectionExtensions                                                    83.3%
  PatternKit.Examples.MediatorDemo.SumCmd                                                                          100%
  PatternKit.Examples.MediatorDemo.SumCmdBehavior                                                                  100%
  PatternKit.Examples.MediatorDemo.SumHandler                                                                      100%
  PatternKit.Examples.MediatorDemo.UserCreated                                                                     100%
  PatternKit.Examples.MediatorDemo.WelcomeEmailHandler                                                             100%
  PatternKit.Examples.MementoDemo.MementoDemo                                                                     83.5%
  PatternKit.Examples.Messaging.CreateUser                                                                           0%
  PatternKit.Examples.Messaging.DispatcherUsageExamples                                                              0%
  PatternKit.Examples.Messaging.EmailSent                                                                            0%
  PatternKit.Examples.Messaging.OrderPlaced                                                                          0%
  PatternKit.Examples.Messaging.PagedItem                                                                            0%
  PatternKit.Examples.Messaging.PagedRequest                                                                         0%
  PatternKit.Examples.Messaging.SearchQuery                                                                          0%
  PatternKit.Examples.Messaging.SearchResult                                                                         0%
  PatternKit.Examples.Messaging.SendEmail                                                                            0%
  PatternKit.Examples.Messaging.SourceGenerated.ComprehensiveMediatorDemo                                            0%
  PatternKit.Examples.Messaging.SourceGenerated.CreateCustomerCommand                                                0%
  PatternKit.Examples.Messaging.SourceGenerated.CreateCustomerHandler                                                0%
  PatternKit.Examples.Messaging.SourceGenerated.Customer                                                             0%
  PatternKit.Examples.Messaging.SourceGenerated.CustomerCreatedEvent                                                 0%
  PatternKit.Examples.Messaging.SourceGenerated.GetCustomerHandler                                                   0%
  PatternKit.Examples.Messaging.SourceGenerated.GetCustomerQuery                                                     0%
  PatternKit.Examples.Messaging.SourceGenerated.GetOrdersByCustomerHandler                                           0%
  PatternKit.Examples.Messaging.SourceGenerated.GetOrdersByCustomerQuery                                             0%
  PatternKit.Examples.Messaging.SourceGenerated.InMemoryCustomerRepository                                           0%
  PatternKit.Examples.Messaging.SourceGenerated.InMemoryLogger                                                       0%
  PatternKit.Examples.Messaging.SourceGenerated.InMemoryOrderRepository                                              0%
  PatternKit.Examples.Messaging.SourceGenerated.InMemoryProductRepository                                            0%
  PatternKit.Examples.Messaging.SourceGenerated.LoggingBehavior<T1, T2>                                              0%
  PatternKit.Examples.Messaging.SourceGenerated.MediatorServiceCollectionExtensions                                  0%
  PatternKit.Examples.Messaging.SourceGenerated.NotifyInventoryHandler                                               0%
  PatternKit.Examples.Messaging.SourceGenerated.Order                                                                0%
  PatternKit.Examples.Messaging.SourceGenerated.OrderItem                                                            0%
  PatternKit.Examples.Messaging.SourceGenerated.OrderPlacedEvent                                                     0%
  PatternKit.Examples.Messaging.SourceGenerated.PaymentProcessedEvent                                                0%
  PatternKit.Examples.Messaging.SourceGenerated.PerformanceBehavior<T1, T2>                                          0%
  PatternKit.Examples.Messaging.SourceGenerated.PlaceOrderCommand                                                    0%
  PatternKit.Examples.Messaging.SourceGenerated.PlaceOrderHandler                                                    0%
  PatternKit.Examples.Messaging.SourceGenerated.ProcessPaymentCommand                                                0%
  PatternKit.Examples.Messaging.SourceGenerated.ProcessPaymentHandler                                                0%
  PatternKit.Examples.Messaging.SourceGenerated.ProductionDispatcher                                                 0%
  PatternKit.Examples.Messaging.SourceGenerated.ProductSearchResult                                                  0%
  PatternKit.Examples.Messaging.SourceGenerated.RecordPaymentAuditHandler                                            0%
  PatternKit.Examples.Messaging.SourceGenerated.SearchProductsHandler                                                0%
  PatternKit.Examples.Messaging.SourceGenerated.SearchProductsQuery                                                  0%
  PatternKit.Examples.Messaging.SourceGenerated.SendOrderConfirmationHandler                                         0%
  PatternKit.Examples.Messaging.SourceGenerated.SendWelcomeEmailHandler                                              0%
  PatternKit.Examples.Messaging.SourceGenerated.TransactionBehavior<T1, T2>                                          0%
  PatternKit.Examples.Messaging.SourceGenerated.UpdateCustomerStatsHandler                                           0%
  PatternKit.Examples.Messaging.SourceGenerated.ValidationBehavior<T1, T2>                                           0%
  PatternKit.Examples.Messaging.UserCreated                                                                          0%
  PatternKit.Examples.Messaging.UserRegistered                                                                       0%
  PatternKit.Examples.ObserverDemo.EventHub<T>                                                                     100%
  PatternKit.Examples.ObserverDemo.LineItem                                                                        100%
  PatternKit.Examples.ObserverDemo.ObservableList<T>                                                                47%
  PatternKit.Examples.ObserverDemo.ObservableVar<T>                                                                100%
  PatternKit.Examples.ObserverDemo.ProfileViewModel                                                                100%
  PatternKit.Examples.ObserverDemo.PropertyChangedHub                                                              100%
  PatternKit.Examples.ObserverDemo.ReactiveTransaction                                                            95.4%
  PatternKit.Examples.ObserverDemo.UserEvent                                                                       100%
  PatternKit.Examples.PatternShowcase.PatternShowcase                                                             91.2%
  PatternKit.Examples.PointOfSale.CustomerInfo                                                                     100%
  PatternKit.Examples.PointOfSale.Demo                                                                            99.6%
  PatternKit.Examples.PointOfSale.OrderLineItem                                                                    100%
  PatternKit.Examples.PointOfSale.PaymentProcessorDemo                                                            95.7%
  PatternKit.Examples.PointOfSale.PaymentReceipt                                                                   100%
  PatternKit.Examples.PointOfSale.PromotionConfig                                                                  100%
  PatternKit.Examples.PointOfSale.PurchaseOrder                                                                    100%
  PatternKit.Examples.PointOfSale.ReceiptLineItem                                                                  100%
  PatternKit.Examples.PointOfSale.StoreLocation                                                                    100%
  PatternKit.Examples.Pricing.ApiPricingSource                                                                     100%
  PatternKit.Examples.Pricing.CharityRoundUpRule                                                                   100%
  PatternKit.Examples.Pricing.Coupon                                                                               100%
  PatternKit.Examples.Pricing.DbPricingSource                                                                      100%
  PatternKit.Examples.Pricing.DefaultSourceRouting                                                                83.3%
  PatternKit.Examples.Pricing.FilePricingSource                                                                    100%
  PatternKit.Examples.Pricing.LineItem                                                                             100%
  PatternKit.Examples.Pricing.Location                                                                             100%
  PatternKit.Examples.Pricing.LoyaltyMembership                                                                    100%
  PatternKit.Examples.Pricing.NickelCashOnlyRule                                                                   100%
  PatternKit.Examples.Pricing.PercentLoyaltyRule                                                                   100%
  PatternKit.Examples.Pricing.PricingContext                                                                       100%
  PatternKit.Examples.Pricing.PricingDemo                                                                         56.7%
  PatternKit.Examples.Pricing.PricingPipeline                                                                      100%
  PatternKit.Examples.Pricing.PricingPipelineBuilder                                                               100%
  PatternKit.Examples.Pricing.PricingResult                                                                        100%
  PatternKit.Examples.Pricing.RegionCategoryTaxPolicy                                                              100%
  PatternKit.Examples.Pricing.Sku                                                                                 85.7%
  PatternKit.Examples.Pricing.SourceRouter                                                                        92.3%
  PatternKit.Examples.PrototypeDemo.PrototypeDemo                                                                  100%
  PatternKit.Examples.ProxyDemo.ProxyDemo                                                                         94.5%
  PatternKit.Examples.ProxyGeneratorDemo.GetTransactionHistoryMethodContext                                          0%
  PatternKit.Examples.ProxyGeneratorDemo.Interceptors.AuthenticationInterceptor                                      0%
  PatternKit.Examples.ProxyGeneratorDemo.Interceptors.CachingInterceptor                                             0%
  PatternKit.Examples.ProxyGeneratorDemo.Interceptors.LoggingInterceptor                                             0%
  PatternKit.Examples.ProxyGeneratorDemo.Interceptors.RetryInterceptor                                               0%
  PatternKit.Examples.ProxyGeneratorDemo.Interceptors.TimingInterceptor                                              0%
  PatternKit.Examples.ProxyGeneratorDemo.PaymentRequest                                                              0%
  PatternKit.Examples.ProxyGeneratorDemo.PaymentResult                                                               0%
  PatternKit.Examples.ProxyGeneratorDemo.PaymentServiceProxy                                                         0%
  PatternKit.Examples.ProxyGeneratorDemo.ProcessPaymentAsyncMethodContext                                            0%
  PatternKit.Examples.ProxyGeneratorDemo.ProcessPaymentMethodContext                                                 0%
  PatternKit.Examples.ProxyGeneratorDemo.ProxyGeneratorDemo                                                          0%
  PatternKit.Examples.ProxyGeneratorDemo.RealPaymentService                                                          0%
  PatternKit.Examples.ProxyGeneratorDemo.Transaction                                                                 0%
  PatternKit.Examples.Singleton.DeviceRegistry                                                                     100%
  PatternKit.Examples.Singleton.PosAppState                                                                        100%
  PatternKit.Examples.Singleton.PosAppStateDemo                                                                    100%
  PatternKit.Examples.Singleton.PricingCache                                                                       100%
  PatternKit.Examples.Singleton.StoreConfig                                                                        100%
  PatternKit.Examples.SingletonGeneratorDemo.AppClock                                                             81.8%
  PatternKit.Examples.SingletonGeneratorDemo.ConfigManager                                                        92.5%
  PatternKit.Examples.SingletonGeneratorDemo.ServiceRegistry                                                      96.4%
  PatternKit.Examples.StateDemo.OrderStateDemo                                                                     100%
  PatternKit.Examples.Strategies.Coercion.Coercer<T>                                                              83.3%
  PatternKit.Examples.Strategies.Coercion.CoercerExtensions                                                        100%
  PatternKit.Examples.Strategies.Composed.ChannelPolicy                                                            100%
  PatternKit.Examples.Strategies.Composed.ChannelPolicyFactory                                                     100%
  PatternKit.Examples.Strategies.Composed.ComposedStrategies                                                      94.2%
  PatternKit.Examples.Strategies.Composed.SendContext                                                              100%
  PatternKit.Examples.Strategies.Composed.SendResult                                                               100%
  PatternKit.Examples.TemplateDemo.AsyncDataPipeline                                                               100%
  PatternKit.Examples.TemplateDemo.DataProcessor                                                                   100%
  PatternKit.Examples.TemplateDemo.TemplateAsyncFluentDemo                                                         100%
  PatternKit.Examples.TemplateDemo.TemplateFluentDemo                                                               90%
  PatternKit.Examples.TemplateDemo.TemplateMethodDemo                                                              100%
  PatternKit.Examples.TemplateMethodGeneratorDemo.DataRecord                                                       100%
  PatternKit.Examples.TemplateMethodGeneratorDemo.ImportContext                                                    100%
  PatternKit.Examples.TemplateMethodGeneratorDemo.ImportWorkflow                                                   100%
  PatternKit.Examples.TemplateMethodGeneratorDemo.ImportWorkflowDemo                                              88.4%
  PatternKit.Examples.TemplateMethodGeneratorDemo.OrderContext                                                     100%
  PatternKit.Examples.TemplateMethodGeneratorDemo.OrderProcessingDemo                                             85.7%
  PatternKit.Examples.TemplateMethodGeneratorDemo.OrderProcessingWorkflow                                           97%
  PatternKit.Examples.VisitorDemo.Card                                                                             100%
  PatternKit.Examples.VisitorDemo.Cash                                                                             100%
  PatternKit.Examples.VisitorDemo.CountersHandler                                                                  100%
  PatternKit.Examples.VisitorDemo.Demo                                                                             100%
  PatternKit.Examples.VisitorDemo.GiftCard                                                                         100%
  PatternKit.Examples.VisitorDemo.ReceiptRendering                                                                 100%
  PatternKit.Examples.VisitorDemo.Routing                                                                          100%
  PatternKit.Examples.VisitorDemo.StoreCredit                                                                      100%
  PatternKit.Examples.VisitorDemo.Tender                                                                           100%
  PatternKit.Examples.VisitorDemo.Unknown                                                                          100%

PatternKit.Generators                                                                                             91.8%
  PatternKit.Generators.Adapter.AdapterGenerator                                                                  90.7%
  PatternKit.Generators.Builders.BuilderGenerator                                                                 96.3%
  PatternKit.Generators.ComposerGenerator                                                                         87.6%
  PatternKit.Generators.DecoratorGenerator                                                                        90.5%
  PatternKit.Generators.FacadeGenerator                                                                           92.8%
  PatternKit.Generators.Factories.FactoriesGenerator                                                              86.6%
  PatternKit.Generators.MementoGenerator                                                                          94.8%
  PatternKit.Generators.Messaging.DispatcherGenerator                                                             98.1%
  PatternKit.Generators.PrototypeGenerator                                                                        95.3%
  PatternKit.Generators.ProxyGenerator                                                                              85%
  PatternKit.Generators.Singleton.SingletonGenerator                                                              98.1%
  PatternKit.Generators.StateMachineGenerator                                                                     92.6%
  PatternKit.Generators.StrategyGenerator                                                                         93.9%
  PatternKit.Generators.TemplateGenerator                                                                         84.6%
  PatternKit.Generators.VisitorGenerator                                                                          99.4%

PatternKit.Generators.Abstractions                                                                                25.1%
  PatternKit.Generators.Adapter.AdapterMapAttribute                                                                  0%
  PatternKit.Generators.Adapter.GenerateAdapterAttribute                                                             0%
  PatternKit.Generators.Builders.BuilderRequiredAttribute                                                          100%
  PatternKit.Generators.Builders.GenerateBuilderAttribute                                                          100%
  PatternKit.Generators.Composer.ComposerAttribute                                                                   0%
  PatternKit.Generators.Composer.ComposeStepAttribute                                                                0%
  PatternKit.Generators.Decorator.GenerateDecoratorAttribute                                                         0%
  PatternKit.Generators.Facade.FacadeExposeAttribute                                                                 0%
  PatternKit.Generators.Facade.FacadeMapAttribute                                                                    0%
  PatternKit.Generators.Facade.GenerateFacadeAttribute                                                               0%
  PatternKit.Generators.Factories.FactoryCaseAttribute                                                             100%
  PatternKit.Generators.Factories.FactoryClassAttribute                                                            100%
  PatternKit.Generators.Factories.FactoryClassKeyAttribute                                                         100%
  PatternKit.Generators.Factories.FactoryMethodAttribute                                                           100%
  PatternKit.Generators.GenerateStrategyAttribute                                                                  100%
  PatternKit.Generators.MementoAttribute                                                                             0%
  PatternKit.Generators.MementoStrategyAttribute                                                                     0%
  PatternKit.Generators.Messaging.GenerateDispatcherAttribute                                                        0%
  PatternKit.Generators.Prototype.PrototypeAttribute                                                                 0%
  PatternKit.Generators.Prototype.PrototypeStrategyAttribute                                                         0%
  PatternKit.Generators.Proxy.GenerateProxyAttribute                                                                 0%
  PatternKit.Generators.Singleton.SingletonAttribute                                                                 0%
  PatternKit.Generators.State.StateEntryAttribute                                                                    0%
  PatternKit.Generators.State.StateExitAttribute                                                                     0%
  PatternKit.Generators.State.StateGuardAttribute                                                                    0%
  PatternKit.Generators.State.StateMachineAttribute                                                                  0%
  PatternKit.Generators.State.StateTransitionAttribute                                                               0%
  PatternKit.Generators.Template.TemplateAttribute                                                                   0%
  PatternKit.Generators.Template.TemplateHookAttribute                                                               0%
  PatternKit.Generators.Template.TemplateStepAttribute                                                               0%
  PatternKit.Generators.Visitors.GenerateVisitorAttribute                                                            0%

@github-actions
Copy link
Contributor

🔍 PR Validation Results

Version: ``

✅ Validation Steps

  • Build solution
  • Run tests
  • Build documentation
  • Dry-run NuGet packaging

📊 Artifacts

Dry-run artifacts have been uploaded and will be available for 7 days.


This comment was automatically generated by the PR validation workflow.

@codecov
Copy link

codecov bot commented Feb 14, 2026

Codecov Report

❌ Patch coverage is 71.71854% with 209 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.10%. Comparing base (4e11dad) to head (abe2239).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...ternKit.Examples/Generators/State/OrderFlowDemo.cs 4.57% 146 Missing ⚠️
src/PatternKit.Generators/StateMachineGenerator.cs 93.39% 37 Missing ⚠️
...rators.Abstractions/State/StateMachineAttribute.cs 0.00% 13 Missing ⚠️
...nerators.Abstractions/State/StateEntryAttribute.cs 0.00% 4 Missing ⚠️
...enerators.Abstractions/State/StateExitAttribute.cs 0.00% 4 Missing ⚠️
...ors.Abstractions/State/StateTransitionAttribute.cs 0.00% 3 Missing ⚠️
...nerators.Abstractions/State/StateGuardAttribute.cs 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #117      +/-   ##
==========================================
+ Coverage   82.88%   87.10%   +4.21%     
==========================================
  Files         185      192       +7     
  Lines       17793    18532     +739     
  Branches     2536     2664     +128     
==========================================
+ Hits        14748    16142    +1394     
- Misses       2371     2390      +19     
+ Partials      674        0     -674     
Flag Coverage Δ
unittests 87.10% <71.71%> (+4.21%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@JerrettDavis JerrettDavis merged commit cc088dd into main Feb 14, 2026
16 of 17 checks passed
@JerrettDavis JerrettDavis deleted the copilot/create-state-pattern-generator branch February 14, 2026 05:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Generator: Create State Pattern

2 participants