try {
if (k in o){
if (func !== undefined){
return Some(func(o[k]));
} else {
return Some(o[k]);
}
} else {
return None;
}
} catch (ex){
error('exception in optionally',o,k,ex);
return None;
}