}
@Override
public EObject select(final EMatchSpec matcher, int limit) {
IPersistentMap map = deref();
EObject key = matcher.getTupleKey(keypos1);
if (key == null) {
ESetCont cont0 = new ESetCont(matcher, map.seq(), ordered, limit);
return cont0.select();
} else {
ETuple candidate = (ETuple) map.valAt(key);
if (candidate == null) return Native.am_$end_of_table;
EObject res;
if ((res = matcher.match(candidate)) != null) {
return new ETuple2(ERT.NIL.cons(res), Native.am_$end_of_table);
}