code: private <T> T readPrimitive(int defaultSizeBytes, T defaultValue, Class<T> clazz) {
        // Check for zeroes first, since partially-overwritten values are not an error for zeroes.
        if (readZeroes(defaultSizeBytes)) {
          return defaultValue;
        }
        return readValue(defaultValue, clazz, /* allowNull= */ false);
      }
docs: Reads a primitive, which may reinterpret zeros of other types.
  
  @param defaultSizeBytes if reinterpreting zeros, the number of bytes to consume
  @param defaultValue the default value for zeros or reading past the end
  @param clazz this is the type that is being read, but not checked in this method