I actually jotted this down, but must have lost it in the editting process.
The function ChangeAttribute returns TRUE on success, and throws an exception if the attribute doesn't exist, or if it can't take the new value (for some reason).
Is there any time it could possibly return false? It sounds like you couldn't decide between returning errors via a return flag, or via exceptions and munged the two approaches together. (Not an uncommon problem ... at least one version of the DOM spec had the same issue).