protected <T extends Document> void tableChilds(
        final Class<T> type,
        final Supplier<T> childSupplier,
        final SqlSupplier<ResultSet> resultSetSupplier,
        final TableChildMutator<T, ResultSet> resultSetMutator,
        final SqlPredicate<ResultSet> filter,
        final ProgressMeasure progressListener
    ) {
        requireNonNulls(childSupplier, resultSetSupplier, resultSetMutator);

        final long begin = System.currentTimeMillis();
        try (final ResultSet rsChild = resultSetSupplier.get()) {
            readChild(childSupplier, resultSetMutator, filter, rsChild);
        } catch (final SQLException sqle) {
            LOGGER.error(sqle, "Unable to read table child.");
            throw new SpeedmentException(sqle);
        }
        final long duration = System.currentTimeMillis() - begin;
        timers.computeIfAbsent(type, unused -> new AtomicLong()).addAndGet(duration);
    }
@author  Emil Forslund
@author  Per Minborg
@since   3.0.0
runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/abstracts/AbstractDbmsMetadataHandler.java