more complex, yes - but not by much. Basically save your results without pagination in a query variable, then use the query variables in another query without cascade.
eg: (didnt run this btw)
query {
l0 as var(func: anyoftext(State.name, "new york")) @cascade {
l1 as ~City.state {
l2 as ~Address.city {
l3 as ~Restaurant.address
}
}
}
Restaurants (func: uid(l0)) {
State.name
~City.state @filter(uid(l1)) {
City.name
~Address.city @filter(uid(l2)) (first:10, offset:10) {
Address.address1
~Restaurant.address @filter(uid(l3)) {
Restaurant.name
}
}
}
}
}
(or something like that)