Linked objects - The action doesn't link at random

I made a test to see how “Linked objects” works. The arrows make 4 yellow squares move together. When they hit some green squares, the green ones stick to the yellow ones.
I made this to see if I could link the right green squares to the right yellow ones. I make the green square half opaque at the hit and make it rotate as it follows to better see what is executed.

The project can be retrieved here

I observed that even though the link action is executed, the “Take into account all” condition sometimes doesn’t work as I would expect and it seems random. There are 1 or 2 green squares that stay still but sometimes it works fine.
At first, I didn’t put a “for each” because I thought that the condition “is moving” should give each yellow square already. But, without it, until the yellow square in the upper left corner hits something, no square follows the other yellow squares. By the way, it’s the first instance of the yellow square I created.

Is this a bug or is “Linked objects” not intended to be used that way?
If so, is the “for each” really necessary or is it part of the bug?

I’m not really used to GDevelop. I used a similar soft when I was a child and try it to see what is up now. So, I certainly missed something.
The extension system seems well designed. So, Initially, I tried to make a glue behavior to see how it works. I wanted to expose 2 functions: glue and unglue. I thought that “Linked objects” could help to keep track of which instance the Object must follow, but it seems that it’s not fit to work within a behavior because it appears to only work with objects of a specified type.

Here, 2 green squares didn’t follow: