Though the current implementation does use anonymous inner classes under the covers the intent was to specify them such that other implementations that are more efficient could be used. The likely final implementation will be simple methods invoked with invokedynamic that don't need a separate class and instance per call site.