@Override
public Value typecheck(Scope s) {
// evaluate and cache the properties in the closure
Scope properties = propertyForm == null ? null : Declare.typecheckProperties(propertyForm, s);
FunType ft = new FunType(this, properties, s);
TypeChecker.self.uncalled.add(ft);
return ft;
}