private bool CheckKeepStack()
        {
            var argStack = new ArgStack(_args);

            for (var index = _args.Length - 1; index >= 0; index--)
            {
                var arg = _args[index];

                if (arg.KeepOnStack)
                {
                    continue;
                }

                if (!arg.HasPush)
                {
                    var topArg = argStack.GetTop();
                    if (topArg != arg)
                    {
                        return(false);
                    }
                }

                argStack.Consume(arg);
            }

            return(true);
        }
        private void CreateArgs()
        {
            FindSkipArgsReferences();

            for (var i = 0; i < _args.Length; i++)
            {
                _args[i] = new Arg(this, i, _pushInstructions[i]);
            }

            _argStack = new ArgStack(_args);
        }