Consider making the PlayerBaseState constructor Protected as well. It is an abstract class, so nothing will be creating an instance of it. The only items that should care about the base constructor will be items inheriting off of it.
To explain my code here missing the inheritance to the BaseGameState, my version of the game does not have a State abstract class, I use an interface called IGameState as the State abstract class in the lecture does not do anything other than force implementation of three abstract functions (which is also what the interface is doing only not lengthening the Inheritance chain).
public abstract class PlayerBaseState
{
protected PlayerStateMachine StateMachine { get; }
protected PlayerBaseState(PlayerStateMachine stateMachine)
{
StateMachine = stateMachine;
}
}