public IConfigurableRegistration SetLifetime(ILifetime lifetime)
        {
            // Currently allows changing lifetime no matter if compiled or not and/or used in other compiled registrations
            // The change wont be reflected if changed after it have been compiled (and not re-compiled) which is a problem.
            // Throw an exception ? or just  dont care ? or recompile (if already compiled - requires all registrations to be recompiled as they might refer to this registration)

            if (lifetime == null)
                throw new ArgumentNullException("lifetime");

            // Init new lifetime
            lifetime.Init(this);

            // If _lifetime is already set dispose it first ? or call Clear/Reset() if supported ?
            //if (_lifetime != null)
            //   _lifetime.Dispose();

            _lifetime = lifetime;

            return this;
        }