Error message typo.
Preserve source location for struct constructor contracts.
Avoid duplicate work.
Eliminate intermediate lists.