protected void WithClosedModel(ModelOp fn)
        {
            IModel m = Conn.CreateModel();

            m.Close();

            fn(m);
        }
        //
        // Channels
        //

        protected void WithTemporaryModel(ModelOp fn)
        {
            IModel m = Conn.CreateModel();

            try { fn(m); } finally { m.Abort(); }
        }
        protected void WithClosedModel(ModelOp fn)
        {
            IModel m = Conn.CreateModel();
            m.Close();

            fn(m);
        }
        protected void WithTemporaryModel(ModelOp fn)
        {
            IModel m = Conn.CreateModel();

            try { fn(m); } finally { m.Abort(); }
        }
        protected void WithTemporaryModel(IConnection c, ModelOp fn)
        {
            IModel m = c.CreateModel();

            try { fn(m); } finally { m.Abort(); }
        }