Value seems to be spontaneously changing

I’m occasionally receiving a debug value of (0.0, -1.0). As you can see the list is private and there is no code within this script that changes the value. Please Help!

public class MC_Pawn : Piece
{
    private List<Vector2> linearNoTakeMoves;
    private List<Vector2> linearTakeMoves;

    int moveDistance = 2;

    private void Awake()
    {
        linearNoTakeMoves = new List<Vector2>();
        linearNoTakeMoves.Add(new Vector2(0, 1));

        linearTakeMoves = new List<Vector2>();
        linearTakeMoves.Add(new Vector2(-1, 1));
        linearTakeMoves.Add(new Vector2(1, 1));
    }

    public override int[,] GenerateLegalMoves(Board board)
    {
        int[,] legalMoves = new int[board.boardWidth, board.boardHeight];
        legalMoves = FillArray(legalMoves);
        ClearLog();
        //2 space move
        if (firstMove == false)
        {
            moveDistance = 1;
        }

        for (int i = 0; i < linearNoTakeMoves.Count; i++)
        {
            Debug.Log(linearNoTakeMoves*);*

}

legalMoves = GenerateLinearMoves(legalMoves, board, linearNoTakeMoves, moveDistance, 3);
legalMoves = GenerateLinearMoves(legalMoves, board, linearTakeMoves, 1, 2);

legalMoves = MarkSelf(legalMoves);

return legalMoves;
}
}

Ok, I worked it out.
turns out that when I pass through the list as an argument to “GenerateLinearMoves” I’m actually passing a reference to the list and not a copy of the list. So then in “GenerateLinearMoves” when I alter the values in the list it is in fact still altering the original list and not a copy that is local to the function.