Fix a bug with free synthesis and complicated pdspecs.
Fix a bug where we messed up dynamic dispatch in some cases.
Add code to call methods after downcasting the receiver, but leave it disabled for now until I test how much of an impact it has and whether we only want to enable it selectively.
Fix a bug where our downcasting results would make us generate lots of repeated expressions with extra casts.