Composite by Vitaly Kamiansky, Vladimir Ilin

<PackageReference Include="Composite" Version="1.5.5" />

 Composite<TMark, TPayload>

public abstract class Composite<TMark, TPayload> : IEquatable<Composite<TMark, TPayload>>, IStructuralEquatable
Represents a generic marked sequence composite.
public class MarkedComposite<TMark, TPayload> : Composite<TMark, TPayload>

public class MarkedValue<TMark, TPayload> : Composite<TMark, TPayload>

public static class Tags<TMark, TPayload>

public bool IsMarkedComposite { get; }

public bool IsMarkedValue { get; }

public int Tag { get; }

public static Composite<TMark, TPayload> NewMarkedComposite(MarkComponentsPair<TMark, Composite<TMark, TPayload>> item)

public static Composite<TMark, TPayload> NewMarkedValue(MarkValuePair<TMark, TPayload> item)