@Override
    public int getAvailablePermits() {
        int minPermits = Integer.MAX_VALUE;
        for (PoolLimitDeterminationStrategy strategy : strategies) {
            int availablePermits = strategy.getAvailablePermits();
            minPermits = Math.min(minPermits, availablePermits);
        }
        return minPermits; // If will atleast be one strategy (invariant in constructor) and hence this should be the value provided by that strategy.
    }
@ Override public int getAvailablePermits ( ) { int minPermits = Integer . MAX_VALUE ; for ( PoolLimitDeterminationStrategy strategy : strategies ) { int availablePermits = strategy . getAvailablePermits ( ) ; minPermits = Math . min ( minPermits , availablePermits ) ; } return minPermits ; }
Returns the minimum number of permits available across all strategies.

@return The minimum number of permits available across all strategies.