internal void Execute() {
Debug.Assert(this.actionStack != null);
while (this.execResult == ExecResult.Continue) {
ActionFrame frame = (ActionFrame) this.actionStack.Peek();
if (frame == null) {
Debug.Assert(this.builder != null);
this.builder.TheEnd();
ExecutionResult = ExecResult.Done;
break;
}
// Execute the action which was on the top of the stack
if (frame.Execute(this)) {
this.actionStack.Pop();
}
}
if (this.execResult == ExecResult.Interrupt) {
this.execResult = ExecResult.Continue;
}
}