def expand
      @expand ||= Racc.set_closure(@heads.dup) do |ptr|
        if (sym = ptr.symbol) && sym.nonterminal?
          sym.heads
        end
      end.freeze
    end
def expand
      @expand ||= Racc.set_closure(@heads.dup) do |ptr|
        if (sym = ptr.symbol) && sym.nonterminal?
          sym.heads
        end
      end.freeze
    end
If an instance of this NT comes next, then what rules could we be
 starting?