@Nonnull
    public static <I, D> DynamicParallelOracleBuilder<I, D> newDynamicParallelOracle(Collection<? extends MembershipOracle<I, D>> oracles) {
        return new DynamicParallelOracleBuilder<>(oracles);
    }
@ Nonnull public static < I , D > DynamicParallelOracleBuilder < I , D > newDynamicParallelOracle ( Collection < ? extends MembershipOracle < I , D > > oracles ) { return new DynamicParallelOracleBuilder < > ( oracles ) ; }
Creates a {@link DynamicParallelOracleBuilder} using the provided collection of membership oracles. The resulting
parallel oracle will always use a {@link PoolPolicy#FIXED} pool policy and spawn a separate thread for each of
the provided oracles (so that the oracles do not need to care about synchronization if they don't share state).

@param oracles
the oracle instances to distribute the queries to
@param <I>
input symbol type
@param <D>
output domain type

@return the preconfigured oracle builder