is there a real difference handling the various collections and cascading? or could we extract that logic into a common method to make the computeChangeSet a bit shorter and more readable?