void Run(string details);
abstract class RunnableBase : Runnable {
public virtual void Run(string more) {
class Impl1 : RunnableBase {
public override void Run(string extra) {
class Impl2 : RunnableBase {
public override void Run(string other) {
var random = new Random();
if (random.Next(2) == 0) {
var runnable = GetRunnable();
runnable.Run(details: "details");