static public function createManager( $name, array $config, $resource )
	{
		if( ctype_alnum( $name ) === false )
		{
			$classname = is_string( $name ) ? 'MW_Tree_Manager_' . $name : '<not a string>';
			throw new MW_Tree_Exception( sprintf( 'Invalid characters in class name "%1$s"', $classname ) );
		}

		$iface = 'MW_Tree_Manager_Interface';
		$classname = 'MW_Tree_Manager_' . $name;

		if( class_exists( $classname ) === false ) {
			throw new MW_Tree_Exception( sprintf( 'Class "%1$s" not available', $classname ) );
		}

		$manager =  new $classname( $config, $resource );

		if( !( $manager instanceof $iface ) ) {
			throw new MW_Tree_Exception( sprintf( 'Class "%1$s" does not implement interface "%2$s"', $classname, $iface ) );
		}

		return $manager;
	}