if (ret!=null) return ret;
final Variable variable = (Variable) decl.variable().accept(this);
final Expression expression = decl.expression().accept(this);
ret = (variable==decl.variable() && expression==decl.expression()) ?
decl : variable.declare(decl.multiplicity(), expression);
return cache(decl,ret);
}
/**
* Calls lookup(relation) and returns the cached value, if any.