title: Dagger 2: avoid exporting private dependencies
body: <p>Lets say I have a module where I only want to export an instance of <code>A</code>. However this <code>A</code> requires instances of <code>B</code>and <code>C</code> to be passed in the constructor. So we would declare them as well in the module:</p>
  
  <pre><code>public class SampleModule {
  
      @Provides
      @Singleton
      A provideA(B b, C c){
          return new A(b, c);
      }
  
      @Provides
      @Singleton
      B provideB(){
          return new B();
      }
  
      @Provides
      @Singleton
      C provideC(){
          return new C(); 
      }
  }
  </code></pre>
  
  <p>This works, but now <code>B</code> and <code>C</code> are also available elsewhere in the code. I want to keep them private and force client classes to only have access to <code>A</code>.</p>
  
  <p>Is there a way to achieve this?</p>