I don't get what's going on with error messages:
 `MD_u64 error_offset = node->offset - ctx->original_first->offset;`
 Why is it rebased by "original_first"?
 Why is it the same for 3 locations but different here?
  `MD_u64 error_offset = ctx.first->offset - first->offset;`
 Why is it named `MD_MakeExprParseError`?

Some changes I made to `MD_MakeExprParseError` (I'm not obsessed I swear):
 Attach user pointer to keep the testing features working as originally written





