using System.Collections.Generic;
public class FrameEvent {
public FrameEvent(string message, Dictionary<string,object> parameters) {
this._parameters = parameters;
public Dictionary<string,Object> _parameters;
public partial class ReturnVsContinue {
public ReturnVsContinue() {
FrameEvent e = new FrameEvent("return",null);
public void _continue() {
FrameEvent e = new FrameEvent("continue",null);
private void _sChild_(FrameEvent e) {
if (e._message.Equals("return")) {
log_do("saw return in $Child");
else if (e._message.Equals("continue")) {
log_do("saw continue in $Child");
private void _sParent_(FrameEvent e) {
if (e._message.Equals("return")) {
log_do("saw return in $Parent");
else if (e._message.Equals("continue")) {
log_do("saw continue in $Parent");
protected virtual void log_do(string msg) { throw new NotImplementedException(); }
private delegate void FrameState(FrameEvent e);
private FrameState _state_;
public partial class ReturnVsContinueController : ReturnVsContinue {
protected override void log_do(string msg) {
public static void Main()
var controller = new ReturnVsContinueController();