function applyStyle(data) {
    // any property present in `data.styles` will be applied to the popper,
    // in this way we can make the 3rd party modifiers add custom styles to it
    // Be aware, modifiers could override the properties defined in the previous
    // lines of this modifier!
    setStyles(data.instance.popper, data.styles);

    // any property present in `data.attributes` will be applied to the popper,
    // they will be set as HTML attributes of the element
    setAttributes(data.instance.popper, data.attributes);

    // if arrowElement is defined and arrowStyles has some properties
    if (data.arrowElement && Object.keys(data.arrowStyles).length) {
      setStyles(data.arrowElement, data.arrowStyles);
    }

    return data;
  }
@function
@memberof Modifiers
@argument {Object} data - The data object generated by `update` method
@argument {Object} data.styles - List of style properties - values to apply to popper element
@argument {Object} data.attributes - List of attribute properties - values to apply to popper element
@argument {Object} options - Modifiers configuration and options
@returns {Object} The same data object