/**
   * Changes the quad pipeline.
   *
   * @param gl Current OpenGL context
   * @param pipeline Quad pipeline to change to
   */
  private final void setPipeline(
      /*@Nonnull*/ final GL gl, /*@Nonnull*/ final QuadPipeline pipeline) {

    assert gl != null : "GL should not be null";
    assert pipeline != null : "Pipeline should not be null";

    final QuadPipeline oldPipeline = this.pipeline;
    final QuadPipeline newPipeline = pipeline;

    // Remove the old pipeline
    if (oldPipeline != null) {
      oldPipeline.removeListener(this);
      oldPipeline.dispose(gl);
      this.pipeline = null;
    }

    // Store the new pipeline
    newPipeline.addListener(this);
    this.pipeline = newPipeline;
    pipelineDirty = false;
  }