  The Lovasz Local Lemma is a seminal result in probabilistic combinatorics. It
gives a sufficient condition on a probability space and a collection of events
for the existence of an outcome that simultaneously avoids all of those events.
Finding such an outcome by an efficient algorithm has been an active research
topic for decades. Breakthrough work of Moser and Tardos (2009) presented an
efficient algorithm for a general setting primarily characterized by a product
structure on the probability space.
  In this work we present an efficient algorithm for a much more general
setting. Our main assumption is that there exist certain functions, called
resampling oracles, that can be invoked to address the undesired occurrence of
the events. We show that, in all scenarios to which the original Lovasz Local
Lemma applies, there exist resampling oracles, although they are not
necessarily efficient. Nevertheless, for essentially all known applications of
the Lovasz Local Lemma and its generalizations, we have designed efficient
resampling oracles. As applications of these techniques, we present new results
for packings of Latin transversals, rainbow matchings and rainbow spanning
trees.
