}
}
public boolean produce(IRascalMonitor monitor, ITransaction<Type, IValue, IValue> tr,
Type key, IValue name) {
Transaction t = (Transaction)tr;
IValue reifiedKey = reify(ctx, key);
Result<IValue> result = fun.call(monitor, new Type[] {t.getType(), reifiedKey.getType(), name.getType()},
new IValue[] {t, reifiedKey, name}, null);
if(result.getValue() instanceof IBool)
return ((IBool)result.getValue()).getValue();
else
throw new UnexpectedType(TypeFactory.getInstance().boolType(), result.getType(), ctx.getCurrentAST());