extracted methods from decomposeIntoChangeEvents()