C# driver nested array update

In the example below I receive the error

“Too many positional (i.e. ‘$’) elements found in path”

how can I resolve using type-safe code ?
I read something about array filter but anyone use generic BsonDocument and not reflection

public class Building
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public Store[] Stores { get; set; }
    }
    public class Store
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public Employee[] Employee { get; set; }
    }
    public class Employee
    {
        public string Id { get; set; }
        public string Name { get; set; }
    }

    public async Task UpdateEmployee(string buildingId,string storeId,string employeeId,string newName)
    {

        var filter = Builders<Building>.Filter.Eq(x => x.Id, buildingId);
        filter &= Builders<Building>.Filter.ElemMatch(x => x.Stores, y => y.Id == storeId);
        filter &= Builders<Building>.Filter.ElemMatch(x => x.Stores[-1].Employee, y => y.Id == employeeId);

        var update = Builders<Building>.Update
          .Set(x => x.Stores.ElementAt(-1).Employee.ElementAt(-1).Name, newName);

        var result = await collection.UpdateOneAsync(
            filter: filter,
            update: update
        );
    }