Support optionality operator "?"

Add a specific exception NonMatchingNonOptionalKey
Add tests for this