protected override void OnReferenceInitializing()
        {
            base.OnReferenceInitializing();

            if (_implementation == null) // may have been set by ctor
            {
                _implementation = BindableDomainObjectImplementation.Create(this);
            }
        }
        public static BindableDomainObjectImplementation Create(BindableDomainObject wrapper)
        {
            ArgumentUtility.CheckNotNull("wrapper", wrapper);
            Assertion.DebugAssert(!TypeExtensions.CanAscribeTo(typeof(BindableDomainObjectImplementation), typeof(Mixin <,>)),
                                  "we assume the mixin does not have a base object");
            var impl = new BindableDomainObjectImplementation(wrapper);

            ((IInitializableMixin)impl).Initialize(wrapper, null, false);
            return(impl);
        }