I think you want to return immediately at the end of the `if isinstance(obj, ChromaticSum)` clause rather than wait for the loop to end.  Otherwise, I believe you will have a problem if there are two `ChromaticSum`s in `objlist`.  (Worth adding a unit test to make sure this works with two sums, even though I can't think of an actual use case for that right off the bat.)