It would be great if it was possible to do an early exit out of a loop in activity diagrams (new syntax). There is an early version of goto, but it only works backwards, so it is not so useful for this one.
Something along the lines of (this does not work yet):
:loop over all instances to find a free one
while (instance exists?)
if (free?) then (yes)
:reserve this instance;
:get next instance;