public abstract void Run(WorldState startingWorldState);
public abstract WorldState Action(WorldState worldState);
public override WorldState Action(WorldState worldState) { throw new NotImplementedException(); }
public abstract GoalAchievementState GoalAchieved(WorldState worldState);
public override GoalAchievementState GoalAchieved(WorldState worldState) { throw new NotImplementedException(); }