flatbuffer reader 区分的选择性写入的similar-fields如何区分?

How are similar-fields that are optionally written, distinguished by flatbuffer reader?

Flatbuffer documentation 提到字段在数据中是可选的。

Each field is optional: It does not have to appear in the wire representation, and you can choose to omit fields for each individual object.

如果其中一个字段未写入,我对 flatbuffer 如何区分两个相似字段感到有点困惑。

例如。

table Monster {
  hp:short;
  hpNew:short;
}

这里如果我在数据文件里只写hpNew,reader怎么知道这是hpNew还是hp

medium article 解释说内存中的 table 是从 对虚拟 table 的引用开始的,它告诉我们在哪里可以找到属性。

如果有未写入的字段(可选),此虚拟 table 将其偏移量标记为 0。

PS:这似乎是 table 的成本高于结构的原因,也是 flatbuffer 优于 Cap'n Proto(不支持此功能)的原因。