Support long chains of instruction where getUnderlyingObject fails.
getUnderlyingObjects already traverse large set on instructions so
there is no reason to limit some sequences by MaxLookup.
getUnderlyingObject needs MaxLookup to avoid infinit loops on cycles.
getUnderlyingObjects uses Visited so it can't get into infinit loops
if it calls getUnderlyingObject with MaxLookup > 0.
So we can continiosly repeate getUnderlyingObject updating Visited and
return all underlying Values.