Seems like quite a bit of overhead compared to Scala, may I suggest using the strategy employed by the Future Java APIs and make CaseStatement a PF?