Hi Bruce,
I relate to your question #4: “… expect Component3 to have three instances show up in the IBD when synchronized, but only one shows up."
Great coincidence for me that you sent this question now. Coz in the last couple of days that’s exactly what I’m trying to do, declare a sub-block with a multiplicity of 3 or whatever, and expecting as you say, “a number of instances to show up in the IBD”.
The only way I found, is to do as I think you already did, drag the ‘Component’ block from the Project Explorer on to the IBD as many times as you need. (And you can define the ‘Component’ block in a different BDD – and maybe it’s even best that way.)

Interesting, the first time I dragged the block into the IBD, it appeared as a ‘part’ (Part1: Component 2). And then the subsequent times I dragged in the ‘Component 2’ block, the instances/usages appeared as a ‘property’.
Was looking forward to demo-ing to my boss how easily reusable components are, and I can declare a block with multiplicity of X, and get X parts (usages) on the IBD.
So to Sparx team: are we correct that multiplicity of X is supposed to give us X parts automatically? Or maybe we still have more SysML learning to do, i.e., if not, why not?
Thanks
Avi