public function afterMainTaxonomy()
	{
		// Run the pruning process over the roles taxonomy
		$map = array(
			XBRL_US_GAAP_2015::$us_GAAP_2013_NS => XBRL_US_GAAP_2015::$us_GAAP_2013_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2013_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2013_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2013_ENTRY_POINT_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2013_ROLES_NS,

			XBRL_US_GAAP_2015::$us_GAAP_2014_NS => XBRL_US_GAAP_2015::$us_GAAP_2014_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2014_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2014_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2014_ENTRY_POINT_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2014_ROLES_NS,

			XBRL_US_GAAP_2015::$us_GAAP_2015_NS => XBRL_US_GAAP_2015::$us_GAAP_2015_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2015_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2015_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2015_ENTRY_POINT_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2015_ROLES_NS,

			XBRL_US_GAAP_2015::$us_GAAP_2016_NS => XBRL_US_GAAP_2015::$us_GAAP_2016_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2016_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2016_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2016_ENTRY_POINT_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2016_ROLES_NS,

			XBRL_US_GAAP_2015::$us_GAAP_2017_NS => XBRL_US_GAAP_2015::$us_GAAP_2017_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2017_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2017_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2017_ENTRY_POINT_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2017_ROLES_NS,

			XBRL_US_GAAP_2015::$us_GAAP_2018_NS => XBRL_US_GAAP_2015::$us_GAAP_2018_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2018_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2018_ROLES_NS,
			XBRL_US_GAAP_2015::$us_GAAP_2018_ENTRY_POINT_ALL_NS => XBRL_US_GAAP_2015::$us_GAAP_2018_ROLES_NS,
		);

		/**
		 * @var XBRL $taxonomy
		 */
		$taxonomy = false;
		if ( isset( $map[ $this->getNamespace() ] ) )
		{
			$taxonomy = $this->getTaxonomyForNamespace( $map[ $this->getNamespace() ] );
		}

		if ( ! $taxonomy )
		{
			foreach ( array_unique( array_values( $map ) ) as $namespace => $roleNamespace )
			{
				if ( ! ( $taxonomy = $this->getTaxonomyForNamespace( $roleNamespace ) ) ) continue;
				break;
			}

			if ( ! $taxonomy )
			{
				$this->log()->err( "The Roles schema cannot be located for taxonomy with namespace '{$this->getNamespace()}'" );
				exit;
			}
		}

		// /**
		//  * @var XBRL $taxonomy
		//  */
		// $taxonomy = $this->getTaxonomyForNamespace( XBRL_US_GAAP_2015::$us_GAAP_2015_ROLES_NS );
		// if ( ! $taxonomy )
		// {
		// 	$taxonomy = $this->getTaxonomyForNamespace( XBRL_US_GAAP_2015::$us_GAAP_2014_ROLES_NS );
		// 	if ( ! $taxonomy )
		// 	{
		// 		$this->log()->err( "The Roles schema cannot be located for 2014 or 2015" );
		// 		exit;
		// 	}
		// }

		if ( $this->context->isExtensionTaxonomy() )
		{
			// This is needed because the definitions and presentations are loaded into
			// the roles schema which is loaded early so an additional fixup is required.
			$taxonomy->fixupPresentationHypercubes();
			$taxonomy->fixupDefinitionRoles(); // Mainly adds a 'paths' index to the 'hierarchy' element of each role.
		}

		$this->context->locale = 'en_US';
		$taxonomy->context->locale = 'en_US';
	}