class DefaultHttp2RemoteFlowController implements Http2RemoteFlowController {

  @Override
  public void updateDependencyTree(
      final int childStreamId,
      final int parentStreamId,
      final short weight,
      final boolean exclusive) {
    // It is assumed there are all validated at a higher level. For example in the Http2FrameReader.
    assert weight >= MIN_WEIGHT && weight <= MAX_WEIGHT : "Invalid weight";
    assert childStreamId != parentStreamId : "A stream cannot depend on itself";
    assert childStreamId > 0 && parentStreamId >= 0
        : "childStreamId must be > 0. parentStreamId must be >= 0.";

    streamByteDistributor.updateDependencyTree(childStreamId, parentStreamId, weight, exclusive);
  }

  public  DefaultHttp2RemoteFlowController(final Http2Connection connection);
  public  DefaultHttp2RemoteFlowController(
      final Http2Connection connection, final StreamByteDistributor streamByteDistributor);
  public  DefaultHttp2RemoteFlowController(
      final Http2Connection connection, final Listener listener);
  public  DefaultHttp2RemoteFlowController(
      final Http2Connection connection,
      final StreamByteDistributor streamByteDistributor,
      final Listener listener);

}