Hi and welcome to the Squeak world!
If you check the implementation of Morph>>collapse method, it is the following (in Squeak 4.5): collapse CollapsedMorph new beReplacementFor: self
The problem is the method returning self instead of returning the CollapsedMorph. You can either modify the method (discouraged), add your own method to the Morph class (remember to use the star prefix in the protocol name, and to use the proper name to assign it to a proper package), or just use the content of the method directly in your code.
My preferred way to do it would be adding a method to the Morph class. Let me assume the class category of my package is MyPackage. Just add the protocol *MyPackage with the method: myPackageCollapse ^ collapsedMorph new beReplacementFor: self.
Now you can do: |morph collapsedMorph| morph := Morph new. "collapse it" collapsedMorph := morph collapse. "uncollapse it" collapsedMorph collapseOrExpand.
Best wishes, Mateusz