nl_tokens: use recursive to move what in source to the target if you do not provide a target we will create a new target
pl_tokens: function recursiveFn ( source , target , <mask> ) { if ( isArray ( source ) || isObject ( source ) ) { target = isPrimitive ( target ) ? isObject ( source ) ? { } : [ ] : target ; for ( var _key in source ) { // $FlowFixMe: support computed key here setter ( target , _key , recursiveFn ( source [ _key ] , target [ _key ] , _key ) ) ; // target[key] = recursiveFn(source[key], target[key], key); } return target ; } return fn ( source , target , key ) ; }