internal static Lazy <T> CreateStronglyTypedExportOfT <T>(Export export)
        {
            IDisposable disposable = export as IDisposable;

            if (disposable != null)
            {
                return(new DisposableLazy <T>(
                           () => ExportServices.GetExportedValueFromLazy <T>(export),
                           export as IDisposable));
            }
            else
            {
                return(new Lazy <T>(() => ExportServices.GetExportedValueFromLazy <T>(export), false));
            }
        }
        internal static Lazy <T, M> CreateStronglyTypedExportOfTM <T, M>(Export export)
        {
            IDisposable disposable = export as IDisposable;

            if (disposable != null)
            {
                return(new DisposableLazy <T, M>(
                           () => ExportServices.GetExportedValueFromLazy <T>(export),
                           AttributedModelServices.GetMetadataView <M>(export.Metadata),
                           disposable));
            }
            else
            {
                return(new Lazy <T, M>(
                           () => ExportServices.GetExportedValueFromLazy <T>(export),
                           AttributedModelServices.GetMetadataView <M>(export.Metadata),
                           false));
            }
        }