bool SerializedScriptValueReaderForModules::read(
    v8::Local<v8::Value>* value,
    ScriptValueDeserializer& deserializer) {
  SerializationTag tag;
  if (!readTag(&tag))
    return false;
  switch (tag) {
    case DOMFileSystemTag:
      if (!readDOMFileSystem(value))
        return false;
      deserializer.pushObjectReference(*value);
      break;
    case CryptoKeyTag:
      if (!readCryptoKey(value))
        return false;
      deserializer.pushObjectReference(*value);
      break;
    case RTCCertificateTag:
      if (!readRTCCertificate(value))
        return false;
      deserializer.pushObjectReference(*value);
      break;
    default:
      return SerializedScriptValueReader::readWithTag(tag, value, deserializer);
  }
  return !value->IsEmpty();
}
bool SerializedScriptValueReaderForModules::read(v8::Local<v8::Value>* value, ScriptValueCompositeCreator& creator)
{
    SerializationTag tag;
    if (!readTag(&tag))
        return false;
    switch (tag) {
    case DOMFileSystemTag:
        if (!readDOMFileSystem(value))
            return false;
        creator.pushObjectReference(*value);
        break;
    case CryptoKeyTag:
        if (!readCryptoKey(value))
            return false;
        creator.pushObjectReference(*value);
        break;
    default:
        return SerializedScriptValueReader::readWithTag(tag, value, creator);
    }
    return !value->IsEmpty();
}