The value of the field and the items are synchronised, yes, and kept update at the same time. This is why `setItems` calls `setValue`, and `setValue` updates the items before calling `parent::setValue`. The only difference between the two is that items is a list of File objects, where value is the serialisable list of file IDs.

Both setValue and setItems will update both items and value, and $items and $value are already both protected. I'm not sure exactly what needs to be worked around! Maybe I'm just being daft though? Can you elaborate please on what the major concern is? ^^