public function getValue( $variableSet, $evaluationResult, $log )
	{
		// This is an error
		if ( ! isset( $variableSet->context ) ) return array();

		// Get context for this rule's source
		$sourceContext = $variableSet->getComponentForPath( $this->source, $variableSet->explicitDimensionsComponentPath, 'explicitMember', $evaluationResult, $this->aspectDimension, $log, $contextRef );
		$sourceContext = Dimension::contextToIndex( $sourceContext, true, $variableSet, $this->aspectDimension );

		// Get original context
		$context = $variableSet->context;

		if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $this->dimension['originalPrefix'] ) )
		{
			$this->dimension['originalPrefix'] = $variableSet->xbrlInstance->getPrefixForNamespace( $this->dimension['namespace'] );
		}
		$dimensionQName = "{$this->dimension['originalPrefix']}:{$this->dimension['name']}";

		if ( $this->omit )
		{
			// Omit always applies to the default context
			unset( $context[ $dimensionQName ] );
		}
		else if ( $this->member )
		{
			// If a member is defined then the dimension/member is being added or updated
			if ( isset( $this->member['qname'] ) )
			{
				// Make sure the prefix is compatible with the instance document
				$qname = qname( $this->member['qname'], $variableSet->nsMgr->getNamespaces() );
				if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $qname->prefix ) )
				{
					$qname->prefix = $variableSet->xbrlInstance->getPrefixForNamespace( $qname->namespaceURI );
				}
				$name = "{$qname->prefix}:{$qname->localName}";
				$context[ $dimensionQName ] = array( $name => $name );
			}
			else if ( $this->member['qnameExpression'] )
			{
				$vars = $evaluationResult['vars'];
				$result = $this->evaluateXPath( $variableSet, "{$this->member['qnameExpression']} cast as xs:string", $vars );

				$qname = qname( $result->getValue(), $variableSet->nsMgr->getNamespaces() );
				if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $qname->prefix ) )
				{
					$qname->prefix = $variableSet->xbrlInstance->getPrefixForNamespace( $qname->namespaceURI );
				}
				$name = "{$qname->prefix}:{$qname->localName}";

				$context[ $dimensionQName ] = array( $name => $name );
			}
		}
		else if ( isset( $sourceContext[ $dimensionQName ] ) )
		{
			// Add any members from the source
			$context[ $dimensionQName ] = $sourceContext[ $dimensionQName ];
		}
		else
		{
			$log->formula_validation( "Explicit dimension aspect rule", "A dimension is being added but there are no members",
				array(
					'dimension' => $dimensionQName,
					'error' => 'xbrlfe:missingSAVForExplicitDimensionRule'
				)
			);
		}

		return $context;
	}