Equip `parameter/c` with separate in/out contracts
Use new parameter/c argument for contract generation

Closes PR 13446