void runLoop() {
            do {
                List<Runnable> pTasks = propagationTasks;
                propagationTasks = new LinkedList<>();

                pTasks.forEach(Runnable::run);

                if (propagationTasks.isEmpty() && !analogDropPropagationTasks.isEmpty()) {
                    propagationTasks = analogDropPropagationTasks;
                    analogDropPropagationTasks = new LinkedList<>();
                }
            } while (!propagationTasks.isEmpty());
        }
Used when the propagator did not change signal, but a new connection may
have been established and signal needs recalculating
core/src/main/java/mrtjp/projectred/core/RedstonePropagator.java