| // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | package lambdas_jstyle_runnable | 
 |  | 
 | import lambdas_jstyle_runnable.inner.Delegator3 | 
 | import lambdas_jstyle_runnable.inner.Implementer4 | 
 | import java.util.ArrayDeque | 
 | import java.util.Queue | 
 |  | 
 | private val queue : Queue<String> = ArrayDeque<String>() | 
 |  | 
 | fun publish(message: String) { | 
 |   queue.add(message) | 
 | } | 
 |  | 
 | fun main(args: Array<String>) { | 
 |   assert(queue.isEmpty()) | 
 |   val runner = RunnableRunner() | 
 |   runner.submit(Implementer1().getRunnable()) | 
 |   runner.submit(Implementer2().getRunnable()) | 
 |   runner.submit(Delegator3(Thread.currentThread().priority)) | 
 |   if (runner.size() > 2) { | 
 |     runner.submit(Implementer4().getRunnable()) | 
 |   } | 
 |   runner.waitFutures() | 
 |   assert(queue.size == 3) | 
 | } |