Then, I think it can be refactored as follows:

```ruby
@ast ||= begin
  asts = partitioned_routes.first.map(&:ast)
  Nodes::Or.new(asts) unless asts.empty?
end
```

So that, if `partitioned_routes.first` is empty, `partitioned_routes.first.map(&:ast)` would also be empty. Therefore `Nodes::Or.new(asts) unless asts.empty?` will set `@ast` to `nil` in case it's empty, and to `Nodes::Or` otherwise. That behavior is completely identical to the original one.

What do you think?