_handleBackdrop({ phase }) {
    // eslint-disable-next-line default-case
    switch (phase) {
      case 'init': {
        if (!this.__backdropInitialized) {
          if (!this.config?.backdropNode) {
            this.__backdropNode = document.createElement('div');
            // If backdropNode existed in config, styles are applied by implementing party
            this.__backdropNode.classList.add(`overlays__backdrop`);
          }
          // @ts-ignore
          this.__wrappingDialogNode.prepend(this.backdropNode);
          this.__backdropInitialized = true;
        }
        break;
      }
      case 'show':
        if (this.config.hasBackdrop) {
          this.backdropNode.classList.add(`overlays__backdrop--visible`);
        }
        this.__hasActiveBackdrop = true;
        break;
      case 'hide':
      case 'teardown':
        this.backdropNode.classList.remove(`overlays__backdrop--visible`);
        this.__hasActiveBackdrop = false;
        break;
    }
  }
Sets up backdrop on the given overlay. If there was a backdrop on another element
it is removed. Otherwise this is the first time displaying a backdrop, so a animation-in
animation is played.
@param {{ animation?: boolean, phase: OverlayPhase }} config
@protected