function lazyMixinPageUtilMethods(page){
	var proto = Object.getPrototypeOf(page);
	if (proto._haveMixedInPageUtilMethods) return;

	proto._haveMixedInPageUtilMethods = true;

	Object.keys(PAGE_MIXIN).forEach(method => {
		if (proto[method]){
			throw new Error(`PAGE_MIXINS method override: ${
				(proto.constructor||{}).name
			}.${method}`);
		}
		proto[method] = PAGE_MIXIN[method];
	});
}
function lazyMixinPageUtilMethods(page){
	var proto = Object.getPrototypeOf(page);
	if (proto._haveMixedInPageUtilMethods) return;

	proto._haveMixedInPageUtilMethods = true;

	Object.keys(PAGE_MIXIN).forEach(method => {
		if (proto[method]){
			throw new Error(`PAGE_MIXINS method override: ${
				(proto.constructor||{}).name
			}.${method}`);
		}
		proto[method] = PAGE_MIXIN[method];
	});
}
function lazyMixinPageUtilMethods ( page ) { var proto = Object . getPrototypeOf ( page ) ; if ( proto . _haveMixedInPageUtilMethods ) return ; proto . _haveMixedInPageUtilMethods = true ; Object . keys ( PAGE_MIXIN ) . forEach ( method => { if ( proto [ method ] ) { throw new Error ( ` ${ ( proto . constructor || { } ) . name } ${ method } ` ) ; } proto [ method ] = PAGE_MIXIN [ method ] ; } ) ; }
This attaches `PAGE_MIXIN` methods to page/middleware classes.  It does this only _once_, and thereafter short-circuits.
This attaches PAGE_MIXIN methods to page / middleware classes . It does this only _once_ and thereafter short - circuits .