In working with graphs you have an example of a partial graph that doesn’t make a ton of sense to me.

```
val pickMaxOfThree = GraphDSL.create() { implicit b ⇒
import GraphDSL.Implicits._
val zip1 = b.add(ZipWith[Int, Int, Int](math.max _))
val zip2 = b.add(ZipWith[Int, Int, Int](math.max _))
zip1.out ~> zip2.in0
UniformFanInShape(zip2.out, zip1.in0, zip1.in1, zip2.in1)
}
```

wouldn’t zip1.in2 and zip2.in2 be unbound in this example? and why are two ZipWiths needed at all, wouldn’t the first pick the max of the three inputs already?