class ConstructorUtil {

    private ConstructorUtil() { }

    public static Object[] buildTpExecutorConstructorArgs(ThreadPoolExecutor dtpExecutor) {

        return new Object[] {
                dtpExecutor.getCorePoolSize(),
                dtpExecutor.getMaximumPoolSize(),
                dtpExecutor.getKeepAliveTime(TimeUnit.MILLISECONDS),
                TimeUnit.MILLISECONDS,
                dtpExecutor.getQueue(),
                dtpExecutor.getThreadFactory(),
                dtpExecutor.getRejectedExecutionHandler()
        };
    }

    public static Class<?>[] buildTpExecutorConstructorArgTypes() {<FILL_FUNCTION_BODY>}

    public static Class<?>[] buildConstructorArgs() {
        return new Class[0];
    }

    public static Class<?>[] buildConstructorArgTypes(Object obj) {

        Class<?> clazz = obj.getClass();
        Constructor<?>[] constructors = clazz.getConstructors();
        if (constructors.length > 0) {
            return constructors[0].getParameterTypes();
        }
        return new Class[0];
    }
}


        return new Class[] {
                int.class,
                int.class,
                long.class,
                TimeUnit.class,
                BlockingQueue.class,
                ThreadFactory.class,
                RejectedExecutionHandler.class
        };
    
<no_super_class>