docs: void readMeta() {
      final int check = buffer.getInt();
      if(check != MAGIC) {
        throw new AbortException("File does not start with expected magic.");
      }
      final int nummeta = buffer.getInt();
      assert (nummeta > 0) : "Empty bundle?";
      meta = new BundleMeta(nummeta);
      sers = new ByteBufferSerializer<?>[nummeta];
      data = new Object[nummeta];
      for(int i = 0; i < nummeta; i++) {
        try {
          @SuppressWarnings("unchecked")
          SimpleTypeInformation<? extends Object> type = (SimpleTypeInformation<? extends Object>) TypeInformationSerializer.STATIC.fromByteBuffer(buffer);
          sers[i] = type.getSerializer();
          if(i == 0 && DBID.class.isAssignableFrom(type.getRestrictionClass())) {
            hasids = true;
          }
          else {
            meta.add(type);
          }
        }
        catch(UnsupportedOperationException e) {
          throw new AbortException("Deserialization failed: " + e.getMessage(), e);
        }
        catch(IOException e) {
          throw new AbortException("IO error", e);
        }
      }
    }