When the source parser is applied, the user state will be switched for a different object. After
it has finished, the previous user state will be restored. This effectively isolates the source
parser's user state.
If the given paramter is a function, it will be called on the pre-existing user state to
determine the new user state. If it's a non-fuction object, it will be used as the user state
instead.
When the source parser is applied, the user state will be switched for a different object. After it has finished, the previous user state will be restored. This effectively isolates the source parser's user state.
If the given paramter is a function, it will be called on the pre-existing user state to determine the new user state. If it's a non-fuction object, it will be used as the user state instead.