support for names & defaults

Took https://github.com/scala/scala/pull/3753 and made it even better.