public function getAllRoleTypes()
	{
		// Gather all role types
		return array_reduce( $this->context->importedSchemas, function( $carry, /** @var XBRL $taxonomy */ &$taxonomy )
		{
			$rts = $taxonomy->getRoleTypes();
			$taxonomy->normalizeUsedOn( $rts, $taxonomy );

			if ( count( $carry ) )
			{
				foreach ( $rts as $usedOn => $roles )
				{
					if ( isset( $carry[ $usedOn ] )  )
					{
						foreach ( $roles as $role => $details )
						{
							if ( ! isset( $carry[ $usedOn ][ $role ] ) )
							{
								$carry[ $usedOn ][ $role ] = $details;
							}
						}
					}
					else
					{
						$carry[ $usedOn ] = $roles;
					}
				}
			}
			else
			{
				$carry = $rts;
			}
			return $carry;
		}, array() );
	}