class ThreadPoolInfo {

        private final String name;
        private final int poolSize;
        private final int queueSize;
        private final int largestPoolSize;
        private final int active;
        private final long completed;
        private final long rejected;

        @ConstructorProperties({"name", "poolSize", "queueSize", "largestPoolSize", "active", "completed", "rejected"})
        public ThreadPoolInfo(String name,
                              int poolSize,
                              int queueSize,
                              int largestPoolSize,
                              int active,
                              long completed,
                              long rejected) {
            this.name = name;
            this.poolSize = poolSize;
            this.queueSize = queueSize;
            this.largestPoolSize = largestPoolSize;
            this.active = active;
            this.completed = completed;
            this.rejected = rejected;
        }

        @SuppressWarnings("unused")
        public String getName() {
            return name;
        }

        @SuppressWarnings("unused")
        public int getPoolSize() {
            return poolSize;
        }

        @SuppressWarnings("unused")
        public int getQueueSize() {
            return queueSize;
        }

        @SuppressWarnings("unused")
        public int getLargestPoolSize() {
            return largestPoolSize;
        }

        @SuppressWarnings("unused")
        public int getActive() {
            return active;
        }

        @SuppressWarnings("unused")
        public long getCompleted() {
            return completed;
        }

        @SuppressWarnings("unused")
        public long getRejected() {
            return rejected;
        }
    }

    public static final String NAME = "io.crate.monitoring:type=ThreadPools";

    private final ThreadPool threadPool;

    public ThreadPools(ThreadPool threadPool) {
        this.threadPool = threadPool;
    }

    @Nullable
    private ThreadPoolInfo getThreadPoolInfo(String name) {<FILL_FUNCTION_BODY>

        for (ThreadPoolStats.Stats stats : threadPool.stats()) {
            if (stats.getName().equals(name)) {
                return new ThreadPoolInfo(
                    stats.getName(),
                    stats.getThreads(),
                    stats.getQueue(),
                    stats.getLargest(),
                    stats.getActive(),
                    stats.getCompleted(),
                    stats.getRejected());
            }
        }
        return null;
    
<no_super_class>