+ public <Tok extends Input> Topology<Tok> first(Element e, Topology<Tok> empty) {
+ return new Walk.First<Tok>(empty, this).walk(e);
+ }
+ final boolean possiblyEpsilon(Element e) {
+ Walk.Cache cache = this;
+ Boolean ret = possiblyEpsilon.get(e);
+ if (ret != null) return ret.booleanValue();
+ ret = new Walk.PossiblyEpsilon().walk(e) ? Boolean.TRUE : Boolean.FALSE;
+ possiblyEpsilon.put(e, ret);
+ return ret;
+ }