final List<Decl> oldDecls = res.old2fields.get(res.new2old.get(s));
if (oldDecls==null) return;
final CompModule m = res.sig2module.get(s);
final Context cx = new Context(m, warns);
final ExprHasName dup = Decl.findDuplicateName(oldDecls);
if (dup!=null) throw new ErrorSyntax(dup.span(), "sig \""+s+"\" cannot have 2 fields named \""+dup.label+"\"");
for(final Decl d: oldDecls) {
if (d.expr.mult()!=ExprUnary.Op.EXACTLYOF) {if (defined) continue;} else {if (!defined) continue;}
// The name "this" does matter, since the parser and the typechecker both refer to it as "this"
cx.rootfield = d;
cx.rootsig = s;