public IParseItem Visit(BlockItem target)
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }

            using (_compiler.LocalBlock()) {
                foreach (IParseItem child in target.Children)
                {
                    child.Accept(this);
                }

                if (target.Return != null)
                {
                    // return {Return};
                    target.Return.Accept(this);
                    _compiler.CurrentGenerator.Emit(OpCodes.Ret);
                }
            }

            return(target);
        }