title: MEF circular dependency
body: <p>Suppose we have two components depending on one another (indirectly, via interfaces):</p>
  
  <pre><code>public interface IAlice { ... }
  public interface IBob { ... }
  
  [Export(typeof(IAlice)), PartCreationPolicy(CreationPolicy.NonShared)]
  class Alice : IAlice
  {
      [Import]
      private IBob Bob { get; set; }
      ...
  }
  
  // could be defined in some assembly developed by another team
  [Export(typeof(IBob)), PartCreationPolicy(CreationPolicy.NonShared)]
  class Bob : IBob
  {
      [Import]
      private IAlice Alice { get; set; }
      ...
  }
  </code></pre>
  
  <p>This leads to composition failure: The composition failed because it did not complete within '100' iterations. This is most likely caused by a cycle in the dependency graph of a part which is marked with a non-shared creation policy.</p>
  
  <p>I know I can import via Lazy declaration, but this way import will be created on demand while I need that my Alice references Bob and Bob references that same instance of Alice. I was expecting that CompositionContainer would resolve such cycles within one composition operation, but apparently it's not the case.  </p>
  
  <p>I can't declare parts as shared as I don't need single Alice and Bob per container. I just need that such dependency graphs are created as a single piece when it's done in one composition operation. Is there any workaround?</p>
  
  <p>UPD. Added some clarification.</p>