Variant TypeCreator::CreateDynamicVariadic(const Type &type, const ArgumentList &arguments)
        {
            InvokableSignature signature;

            for (auto &argument : arguments)
                signature.emplace_back( argument.GetType( ) );

            auto &constructor = type.GetDynamicConstructor( signature );

            return constructor.Invoke( arguments );
        }
        Variant TypeCreator::CreateDynamic(const Type &type, Args &&...args)
        {
            static InvokableSignature signature;

            static bool initial = true;

            if (initial)
            {
                TypeUnpacker<Args...>::Apply( signature );

                initial = false;
            }

            auto &constructor = type.GetDynamicConstructor( signature );

            return constructor.Invoke( std::forward<Args>( args )... );
        }