private function validateFacts( $elements, $parent, &$types, &$prefixes )
	{
		$instanceTaxonomy = $this->getInstanceTaxonomy();
		$primaryItems = $instanceTaxonomy->getDefinitionPrimaryItems( false );

		foreach ( $elements as $factKey => $fact )
		{
			$drsHypercubes = false;

			foreach ( $fact as $entryKey => $entry )
			{
				// This function will return an empty array if there is no primary item or if the primary item is not
				// associated with any hypercubes.  Otherwise it will contain summary information about the dimensional
				// validation of the primary item.  If the dimensional validation fails it means the fact is not
				// associated with any hypercubes valid for the fact context.
				$primaryItem = isset( $primaryItems[ $entry['label'] ] ) ? $primaryItems[ $entry['label'] ] : false;
				if ( $primaryItem && ! $drsHypercubes )
				{
					$drsHypercubes = $this->getInstanceTaxonomy()->getPrimaryItemDRS( $primaryItem );
				}

				$dimensionalValidation = $this->validateElementEntry( $entry, $factKey, $parent, $types, $prefixes, $primaryItem, $drsHypercubes );
			}
		}
	}