private function validateDivide( $divide, $unitId, $types )
	{
		$numeratorValidation = true;
		$denominatorValidation = true;

		// The divide MUST and a numerator and a denominator
		if ( isset( $divide['numerator'] ) )
		{
			if ( empty( $divide['numerator'] ) )
			{
				$this->log()->instance_validation( "4.8.4", "The 'unitNumerator' MUST NOT be empty", array( 'unit' => $unitId ) );
				$numeratorValidation = false;
			}
			else
			{
				foreach ( $divide['numerator'] as $measure )
				{
					$numeratorValidation &= $this->validateMeasure( $measure, "$unitId (numerator)", $types );
				}
			}
		}
		else
		{
			$this->log()->instance_validation( "4.8.3", "Both a 'unitNumerator' and a 'unitDenominator' MUST be provided.  The numerator is missing.", array( 'unit' => $unitId ) );
			$numeratorValidation = false;
		}

		// The divide MUST and a numerator and a denominator
		if ( isset( $divide['denominator'] ) )
		{
			if ( empty( $divide['denominator'] ) )
			{
				$this->log()->instance_validation( "4.8.4", "The 'unitDenominator' MUST NOT be empty", array( 'unit' => $unitId ) );
				$denominatorValidation = false;
			}
			else
			{
				foreach ( $divide['denominator'] as $measure )
				{
					$denominatorValidation &= $this->validateMeasure( $measure, "$unitId (denominator)", $types );
				}
			}
		}
		else
		{
			$this->log()->instance_validation( "4.8.3", "Both a 'unitNumerator' and a 'unitDenominator' MUST be provided. The denominator is missing.", array( 'unit' => $unitId ) );
			$denominatorValidation = false;
		}

		if ( ! $numeratorValidation || ! $denominatorValidation ) return false;

		// Check the denominator measures do not appear in the numerator measures
		// First create a list of all the numerator qnames
		$qNames = array();
		foreach ( $divide['numerator'] as $measure )
		{
			$qNames[] = qname( $measure, $this->instance_namespaces )->clarkNotation();
		}

		foreach ( $divide['denominator'] as $measure )
		{
			$qName = qname( $measure, $this->instance_namespaces + array( STANDARD_PREFIX_XBRLI => XBRL_Constants::$standardPrefixes[ STANDARD_PREFIX_XBRLI ] ) );
			if ( in_array( $qName->clarkNotation(), $qNames ) )
			{
				XBRL_Log::getInstance()->instance_validation( "4.8.4", "The measure in a denominator cannot appear in a numerator", array( 'unit' => $unitId, 'measure' => $measure ) );
				return false;
			}
		}

		return true;
	}