title: Connecting SourceShape/PortOpts from a UniformFanOutShape to sources in Akka Streams
body: <p>Most examples of FanOut shapes in Akka steams either merge the faned-out flows into a single stream, or immediately connect them to a sink. I want to instead return a sequence of Sources that I can then apply transformation and connect to a sinks later on. An example would look something like this</p>
  
  <pre><code>def transformedSources(src: Source[Int,NotUsed]) : Seq[Source[Int,NotUsed]] {
          import GraphDSL.Implicits._
          val builder = new GraphDSL.Builder
  
          val bcast = builder.add(Broadcast[Int](2))
          src.out ~&gt; bcast.in
  
          val sourceShapes = (bcast.out).map {  out =&gt; SourceShape(out)}}
          ??? // How to convert sourceShapes into Sources
  </code></pre>
  
  <p>}</p>
  
  <p>Is there a way to achieve this? </p>
  
  <p>p.s
  My real use case is an AmorphousShape that takes X sources, and produces X output. Ideally I would like to apply the AmorphousShape stage, and then continue operating as if nothing changes. 
  So if my code now is </p>
  
  <pre><code>sources.map{s =&gt; s.via(someStage).runWith(Sink.seq)} 
  </code></pre>
  
  <p>I would like to transform it into </p>
  
  <pre><code>transformSource(sources).map{s =&gt; s.via(someStage).runWith(Sink.seq)} 
  
  def transformSource(sources:Seq[Source[Int, NotUsed]]) : Seq[Source[Int, NotUsed]] = {do some magic with an AmorphousShape graph }
  </code></pre>