static mediate( subject, target, options, mediationDefinitions, secondTarget = null ) {

		// Cannot mediate if target not defined
		if( !target ) return;

		// Mediate each subject properties to material
		for ( const subjectProperty in mediationDefinitions ) {
			const definition = mediationDefinitions[subjectProperty];

			if ( options[subjectProperty] !== undefined ) {

				// retrieve the mediation transformer to use for this property
				const mediationTransformer = definition.t ? definition.t : directTransfer;
				mediationTransformer( target, definition.m, options[subjectProperty] );

				// Also transfert to second target is isset
				if( secondTarget ) {

					mediationTransformer( secondTarget, definition.m, options[subjectProperty] );

				}

			}

		}

	}
@param {MeshUIComponent} subject
@param {any} target
@param {Object.<(string|number), any>} options
@param {Object.<{subjectProperty:string, t?:(target:any, targetProperty:string, value:any) => void}>} mediationDefinitions
@param {any} [secondTarget=null]