Just populate those arrays before pre-execute hook. Then executeSync simply executes the already populated stuff. ExecuteSync method needs to be divided into populate & execute.
Then execute them in this order.
Populate (itemsToSync, ignored, etc) → pre execute → execute
This is necessary, for example to push files from local disk to Amazon S3 which are tracked by a local DB (file upload is implemented in the pre execute hook, and that needs to know which files to upload.)