private function getCompleteDescendantElement( $element, $types )
	{
		$ancestor = $this->getAncestorElement( $element, $types );
		if ( ! $ancestor )
		{
			if ( XBRL::isValidating() )
			{
				$this->log()->taxonomy_validation( "5.1", "Unable to locate the ancestor element for the derived element",
					array(
						'concept' => $name,
					)
				);
			}
			return $element;
		}
		else
		{
			if ( XBRL_Instance::isEmpty( $element, 'type' ) ) unset( $element['type'] );
			if ( XBRL_Instance::isEmpty( $element, 'substitutionGroup' ) ) unset( $element['substitutionGroup'] );
			return array_merge( $ancestor, $element );
		}
	}