@Override
    public void readFrom(StreamInput in) throws IOException {
      index = in.readSharedString();
      type = in.readOptionalSharedString();
      id = in.readString();
      routing = in.readOptionalString();
      int size = in.readVInt();
      if (size > 0) {
        fields = new String[size];
        for (int i = 0; i < size; i++) {
          fields[i] = in.readString();
        }
      }
      version = Versions.readVersionWithVLongForBW(in);
      versionType = VersionType.fromValue(in.readByte());

      fetchSourceContext = FetchSourceContext.optionalReadFromStream(in);
    }