The "Null token is the latest" parameter does not comply with the expected behavior of a caller, and must be removed.
Moreover, the logic implemented by SyncApiOp#getLatestSyncToken and SyncApiOp#sync shall be changed according to their javadocs:
The javadoc of SyncApiOp#getLatestSyncToken states:
"An application that wants to receive synchronization events "starting now" - i.e., wants to receive only native changes that occur after this method is called-- should call this method and then pass the resulting token into the sync() method."
and SyncApiOp#sync states that the passed syncToken:
"Should be null if this is the client's first call to the sync() method for this connector"