Heavier version of `test*` function. Return following parser result: ``` { valid: boolean; reason?: string; trace: ParseTrace } ```