//
        // Our constructor
        //
        private Iterator(IMethodData method, TypeContainer host, Type iterator_type, bool is_enumerable)
            : base(
                new ToplevelBlock(method.Block, Parameters.EmptyReadOnlyParameters, method.Block.StartLocation),
                TypeManager.bool_type,
                method.Location)
        {
            this.OriginalMethod       = method;
            this.OriginalIteratorType = iterator_type;
            this.IsEnumerable         = is_enumerable;
            this.Host = host;

            IteratorHost = Block.ChangeToIterator(this, method.Block);
        }