public override void CallToString()
        {
            var variable = Il.DeclareLocal(_handleType);

            Il.SetLocal(variable);
            Il.LoadLocalAddress(variable);
            Il.Call(_tostr);
        }
        public LocalHolder DeclareLocal(Type type)
        {
            Queue <GroboIL.Local> queue;

            if (!locals.TryGetValue(type, out queue))
            {
                queue = new Queue <GroboIL.Local>();
                locals.Add(type, queue);
            }
            if (queue.Count == 0)
            {
                queue.Enqueue(Il.DeclareLocal(type));
            }
            return(new LocalHolder(this, type, queue.Dequeue()));
        }