_processOptions() {
    const {
      options,
      _animatedPathClass,
      _reversePathClass,
      _hardwareAccClass,
      _animatedPathId
    } = this;
    const { reverse, hardwareAcceleration } = options;

    let pathOpts = { ...options };
    let pulseOpts = { ...options };

    pulseOpts.color = pulseOpts.pulseColor || options.pulseColor;
    pulseOpts.className = [
      _animatedPathClass,
      _animatedPathId,
      reverse ? _reversePathClass : "",
      hardwareAcceleration ? `${_animatedPathClass}__${_hardwareAccClass}` : ""
    ].join(" ");

    delete pathOpts.dashArray;

    if (Array.isArray(pulseOpts.dashArray)) {
      pulseOpts.dashArray = String(pulseOpts.dashArray);
    }

    return { pathOpts, pulseOpts };
  }
This prevents if some class extending AntPath to return a instance of AntPath itself instead of the invoker class
Doing so, any child class will maintain the status of FUNCTOR object