@startuml

	Class Stage
	Class MultiWaySwitch{
		+constructor:function(cfg)
===
		cases:CaseItem[]
		exHandler:function(err, ctx)
		split:function(ctx)
		combine:function(ctx, resCtx)
===		
	}
  	
  	Class CaseItem {
 		stage:Stage
 		evaluate: boolean | function(ctx):Boolean
 		exHandler:function(err, ctx)
		split:function(ctx)
		combine:function(ctx, resCtx)
 	}
 	MultiWaySwitch *-- "cases" CaseItem
 	Stage <|-- MultiWaySwitch


@enduml