@Override
  protected ThrottleSettings merge(QuotaSettings other) throws IOException {
    if (other instanceof ThrottleSettings) {
      ThrottleSettings otherThrottle = (ThrottleSettings) other;

      // Make sure this and the other target the same "subject"
      validateQuotaTarget(other);

      QuotaProtos.ThrottleRequest.Builder builder = proto.toBuilder();
      if (!otherThrottle.proto.hasType()) {
        return null;
      }

      QuotaProtos.ThrottleRequest otherProto = otherThrottle.proto;
      if (otherProto.hasTimedQuota()) {
        if (otherProto.hasTimedQuota()) {
          validateTimedQuota(otherProto.getTimedQuota());
        }

        if (!proto.getType().equals(otherProto.getType())) {
          throw new IllegalArgumentException("Cannot merge a ThrottleRequest for " + proto.getType()
            + " with " + otherProto.getType());
        }
        QuotaProtos.TimedQuota.Builder timedQuotaBuilder = proto.getTimedQuota().toBuilder();
        timedQuotaBuilder.mergeFrom(otherProto.getTimedQuota());

        QuotaProtos.ThrottleRequest mergedReq =
          builder.setTimedQuota(timedQuotaBuilder.build()).build();
        return new ThrottleSettings(getUserName(), getTableName(), getNamespace(),
          getRegionServer(), mergedReq);
      }
    }
    return this;
  }
Returns a copy of the internal state of <code>this</code>
hbase-client/src/main/java/org/apache/hadoop/hbase/quotas/ThrottleSettings.java