title: Koin singleton inject constructor with private parameter
body: <p>Hello I am just learning Koin, how would this Dagger2 class be provided in Koin 2.0?</p>
  
  <pre><code>@Singleton
  open class AppExecutors(private val diskIO: Executor, private val networkIO: Executor, private val mainThread: Executor) {
  
      @Inject
      constructor() : this(
              Executors.newSingleThreadExecutor(),
              Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1),
              MainThreadExecutor())
  
      fun diskIO(): Executor {
          return diskIO
      }
  
      fun networkIO(): Executor {
          return networkIO
      }
  
      fun mainThread(): Executor {
          return mainThread
      }
  
      private class MainThreadExecutor : Executor {
          private val mainThreadHandler = Handler(Looper.getMainLooper())
          override fun execute(command: Runnable) {
              mainThreadHandler.post(command)
          }
      }
  }
  </code></pre>
  
  <p>I tried this:</p>
  
  <pre><code>single&lt;AppExecutors&gt; { AppExecutors(
      Executors.newSingleThreadExecutor(),
      Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1),
      AppExecutors.MainThreadExecutor())
  }
  </code></pre>
  
  <p>But <code>AppExecutors.MainThreadExecutor()</code> is private. Is the only solution to make it public?</p>