public static void Run <T, TExtend>(this IOvBuilderContext <T, TExtend> builderContext)
        {
            if (!builderContext.TryGetObject <T>(out var obj))
            {
                throw new MissingSourceObjectException();
            }

            builderContext.Run(obj);
        }
        public static void Run <T, TExtend>(this IOvBuilderContext <T, TExtend> builderContext, T obj)
        {
            if (builderContext.TryGetExtObject(out var extend))
            {
                builderContext.Run(obj, extend);
                return;
            }

            throw new MissingExtendObjectException();
        }
        public static void Run <T>(this IOvBuilderContext <T> builderContext)
        {
            if (builderContext.TryGetObject(out var obj))
            {
                builderContext.Run(obj);
                return;
            }

            throw new MissingSourceObjectException();
        }