Proper parsing of patterns including restriction in let/with expression and correct handling of as/when/unless on cons pattern