Maybe add a `assert(val->IsString())` here?