P.drawAndFill = function (engine) {
const [x, y, w, h] = this.copyArray;
if (this.source && w && h) {
const [_x, _y, _w, _h] = this.pasteArray;
const p = this.pathObject,
apply = this.applyFromWorkstore.bind(this),
drawUse = this.useDrawGradientCache,
drawId = this.identifierDrawGradientCache;
if (drawUse) apply(engine, drawId);
else engine.stroke(p);
engine.drawImage(this.source, x, y, w, h, _x, _y, _w, _h);
this.currentHost.clearShadow();
if (drawUse) apply(engine, drawId);
else engine.stroke(p);
engine.drawImage(this.source, x, y, w, h, _x, _y, _w, _h);
}
};