"Does the indicator repaint?"
Yes, this indicator does repaint. Let me explain exactly why, because the repainting is subtle and comes from the logic rather than typical future-bar indexing.

The arrow is drawn on a past bar after future confirmation
The key repainting line is here inside both signal functions:
int signalBar = iBarShift(NULL, 0, PatternBarTime);
SellArrowBuffer[signalBar] = arrowPrice;
and
BuyArrowBuffer[signalBar] = arrowPrice;
What happens
A pattern is detected using older bars.
Confirmation happens later when the price closes beyond a level.
When confirmation occurs, the arrow is drawn on the
earlier pattern bar (PatternBarTime).
So the chart ends up showing an arrow several bars earlier than when the signal was actually known.
Result
In live trading:
No arrow exists initially.
A few bars later, confirmation happens.
Then the arrow suddenly appears on an older candle.
This is classic backpainting.

Pattern invalidation can remove signals
These sections also contribute:
if(High[currentBar] > PatternHigh)
ResetPattern();
and
if(Low[currentBar] < PatternLow)
ResetPattern();
If a pattern is detected but later invalidated, the stored pattern is wiped.
Because the algorithm scans multiple bars each recalculation, historical outcomes can differ depending on what the future bars did.

Global state variables make historical recalculation unstable
These variables are global:
bool IsLookingForSellSignal;
int PatternBarTime;
double PatternHigh;
double PatternLow;
But the indicator loops through many bars every tick:
for(int i = barsToCalculate; i > 0; i--)
So the internal state depends on the order of historical processing, which can change when:
refreshing chart
switching timeframe
switching symbol
history updates
That means signals can shift or disappear after recalculation.

Arrows are cleared after every calculation
Each bar starts with:
BuyArrowBuffer
= 0;
SellArrowBuffer = 0;
So signals are recomputed from scratch every tick, not locked once produced.
Final verdict
Behavior Result
Arrow plotted on earlier bar after confirmation
Backpainting
Signal can appear several bars later
Repaint effect
State variables recalculated
Possible signal shifting
Signals recalculated every tick
Not stable historically
Conclusion:
This indicator repaints/backpaints because it draws signals on past bars after future confirmation.