@Override
  protected BucketProperties convert(List<RiakPB.RpbGetBucketResp> rawResponse)
      throws ExecutionException {
    // This isn't streaming, there will only be one response.
    RiakPB.RpbBucketProps pbProps = rawResponse.get(0).getProps();
    BucketProperties props =
        new BucketProperties()
            .withNVal(pbProps.getNVal())
            .withAllowMulti(pbProps.getAllowMult())
            .withLastWriteWins(pbProps.getLastWriteWins())
            .withOldVClock(Operations.getUnsignedIntValue(pbProps.getOldVclock()))
            .withYoungVClock(Operations.getUnsignedIntValue(pbProps.getYoungVclock()))
            .withBigVClock(Operations.getUnsignedIntValue(pbProps.getBigVclock()))
            .withSmallVClock(Operations.getUnsignedIntValue(pbProps.getSmallVclock()))
            .withPr(pbProps.getPr())
            .withR(pbProps.getR())
            .withW(pbProps.getW())
            .withPw(pbProps.getPw())
            .withDw(pbProps.getDw())
            .withRw(pbProps.getRw())
            .withBasicQuorum(pbProps.getBasicQuorum())
            .withNotFoundOk(pbProps.getNotfoundOk())
            .withRiakSearchEnabled(pbProps.getSearch())
            .withChashkeyFunction(
                new Function.Builder()
                    .withModule(pbProps.getChashKeyfun().getModule().toStringUtf8())
                    .withFunction(pbProps.getChashKeyfun().getFunction().toStringUtf8())
                    .build());

    if (pbProps.hasLinkfun()) {
      props.withLinkwalkFunction(
          new Function.Builder()
              .withModule(pbProps.getLinkfun().getModule().toStringUtf8())
              .withFunction(pbProps.getLinkfun().getFunction().toStringUtf8())
              .build());
    }

    if (pbProps.hasHasPrecommit()) {
      for (Function f : parseHooks(pbProps.getPrecommitList())) {
        props.withPrecommitHook(f);
      }
    }

    if (pbProps.hasHasPostcommit()) {
      for (Function f : parseHooks(pbProps.getPostcommitList())) {
        props.withPostcommitHook(f);
      }
    }

    if (pbProps.hasYzIndex()) {
      props.withYokozunaIndex(pbProps.getYzIndex().toStringUtf8());
    }

    if (pbProps.hasBackend()) {
      props.withBackend(pbProps.getBackend().toStringUtf8());
    }

    return props;
  }