public virtual bool OnUnknownOutcome(OnUnknownOutcomeCallback callback)
 {
     return(false);
 }
 public abstract TMatch Match <TMatch>(OnPositiveCallback <TMatch> positive, OnNegativeCallback <TMatch> negative, OnUnknownOutcomeCallback <TMatch> unknownOutcome);
 public abstract void Match(OnPositiveCallback positive, OnNegativeCallback negative, OnUnknownOutcomeCallback unknownOutcome);
 public override bool OnUnknownOutcome(OnUnknownOutcomeCallback callback)
 {
     callback(this);
     return(false);
 }
 public override TMatch Match <TMatch>(OnPositiveCallback <TMatch> positive, OnNegativeCallback <TMatch> negative, OnUnknownOutcomeCallback <TMatch> unknownOutcome)
 {
     return(unknownOutcome(this));
 }
 public override void Match(OnPositiveCallback positive, OnNegativeCallback negative, OnUnknownOutcomeCallback unknownOutcome)
 {
     unknownOutcome(this);
 }