@SephMethod
public final static SephObject with(SephObject receiver, LexicalScope scope, SThread thread, String[] keywordNames, MethodHandle[] keywordArguments) {
if(keywordNames.length == 0) {
return receiver;
} else {
IPersistentMap args = PersistentArrayMap.EMPTY;
try {
for(int i = 0; i < keywordNames.length; i++) {
args = args.associate(keywordNames[i], (SephObject)keywordArguments[i].invokeExact(thread, scope, true, true));
}
} catch(Throwable e) {
e.printStackTrace();
return null;
}