Reflections.visit(delegate, TypeToken.of(delegate.getClass()),
new MetricsFieldSetter(new ServiceRunnableMetrics(metricsCollectionService,
program.getApplicationId(),
program.getName(), runnableName,
context.getInstanceId())),
new PropertyFieldSetter(runtimeSpec.getRunnableSpecification().getConfigs()));
final String[] argArray = RuntimeArguments.toPosixArray(programOpts.getUserArguments());
LoggingContextAccessor.setLoggingContext(new UserServiceLoggingContext(
program.getAccountId(), program.getApplicationId(), program.getName(), runnableName));
delegate.initialize(new ForwardingTwillContext(context) {