To address the example towards the end of your post, if you want patterns + struct binding at the same time, prefix patterns with `bindName@`, for instance:
transport
myTuple@(start, end)
foo
kwargs@(Kwargs { person = Person{ name = who, ..}, options = Opts{..}, ..})
= do
...