@Test
  public void testEncodeDecodeCommonStats() throws IOException {
    CommonStatsFlags flags = new CommonStatsFlags();
    Flag[] values = CommonStatsFlags.Flag.values();
    assertThat(flags.anySet(), equalTo(true));

    for (Flag flag : values) {
      flags.set(flag, false);
    }
    assertThat(flags.anySet(), equalTo(false));
    for (Flag flag : values) {
      flags.set(flag, true);
    }
    assertThat(flags.anySet(), equalTo(true));
    Random random = getRandom();
    flags.set(values[random.nextInt(values.length)], false);
    assertThat(flags.anySet(), equalTo(true));

    {
      BytesStreamOutput out = new BytesStreamOutput();
      flags.writeTo(out);
      out.close();
      BytesReference bytes = out.bytes();
      CommonStatsFlags readStats =
          CommonStatsFlags.readCommonStatsFlags(new BytesStreamInput(bytes));
      for (Flag flag : values) {
        assertThat(flags.isSet(flag), equalTo(readStats.isSet(flag)));
      }
    }

    {
      for (Flag flag : values) {
        flags.set(flag, random.nextBoolean());
      }
      BytesStreamOutput out = new BytesStreamOutput();
      flags.writeTo(out);
      out.close();
      BytesReference bytes = out.bytes();
      CommonStatsFlags readStats =
          CommonStatsFlags.readCommonStatsFlags(new BytesStreamInput(bytes));
      for (Flag flag : values) {
        assertThat(flags.isSet(flag), equalTo(readStats.isSet(flag)));
      }
    }
  }
 public boolean translog() {
   return flags.isSet(Flag.Translog);
 }
 public boolean completion() {
   return flags.isSet(Flag.Completion);
 }
 public boolean segments() {
   return flags.isSet(Flag.Segments);
 }
 public boolean percolate() {
   return flags.isSet(Flag.Percolate);
 }
 public boolean fieldData() {
   return flags.isSet(Flag.FieldData);
 }
 public boolean indexing() {
   return flags.isSet(Flag.Indexing);
 }
 public boolean docs() {
   return flags.isSet(Flag.Docs);
 }
 public boolean warmer() {
   return flags.isSet(Flag.Warmer);
 }
 public boolean flush() {
   return flags.isSet(Flag.Flush);
 }
 public boolean refresh() {
   return flags.isSet(Flag.Refresh);
 }
 public boolean merge() {
   return flags.isSet(Flag.Merge);
 }
 public boolean search() {
   return flags.isSet(Flag.Search);
 }
 public boolean get() {
   return flags.isSet(Flag.Get);
 }
 public boolean suggest() {
   return flags.isSet(Flag.Suggest);
 }
 public boolean queryCache() {
   return flags.isSet(Flag.QueryCache);
 }
 public boolean filterCache() {
   return flags.isSet(Flag.FilterCache);
 }
 public boolean store() {
   return flags.isSet(Flag.Store);
 }
 public boolean idCache() {
   return flags.isSet(Flag.IdCache);
 }