Why there is so many same variables for pawn in shooter game example

Im a little confused - why in ShooterWeapon class (which is actually describing weapons in game) have three variables for a player pawn??

Like here:

void AShooterWeapon::SetOwningPawn(AShooterCharacter* NewOwner)
{
	if (MyPawn != NewOwner)
	{
		Instigator = NewOwner;
		MyPawn = NewOwner;
		// net owner for RPC calls
		SetOwner(NewOwner);
	}	
}

Why do we need Instigator (which is basic pawn variable from the top pawn class)? It will be the same as MyPawn and we can use only Instigator for everything we need in weapon class…Or we can use MyPawn for everything we need…Why use both of them in different places of class? It makes no sense for me :frowning: