public async Task Push(IViewController controller) { if (Contains(controller)) { throw new ViewAlreadyStackedException(); } _stack.Push(controller); await OnPush(controller); await controller.OnPushedOnViewStack(this); }