Assume we have an expression like so. Assume the value of ../foo is a string that cannot be converted to an int. This will fail at runtime and create an ExpressionEvaluationException processing error and set it in the PState. However, the if the function results in a failure, it throws the processing error. Parsers do not expect ProcessingErrors to be thrown, so it is possible that this thrown Processing Error results could cause MarkPool's to not be discarded and leaked. This in turn hides the processing error so we do not even know the cause of the error.
Processing Errors shouldn't be thrown, so we may need to refactor how expressions are handled so they do not require thrown exceptions.