  Paisley is an extensible lightweight embedded domain-specific language for
nondeterministic pattern matching in Java. Using simple APIs and programming
idioms, it brings the power of functional-logic processing of arbitrary data
objects to the Java platform, without constraining the underlying
object-oriented semantics. Here we present an extension to the Paisley
framework that adds pattern-based control flow. It exploits recent additions to
the Java language, namely functional interfaces and lambda expressions, for an
explicit and transparent continuation-passing style approach to control. We
evaluate the practical impact of the novel features on a real-world case study
that reengineers a third-party open-source project to use Paisley in place of
conventional object-oriented data query idioms. We find the approach viable for
incremental refactoring of legacy code, with significant qualitative
improvements regarding separation of concerns, clarity and intentionality, thus
making for easier code understanding, testing and debugging.
