public HGSearchResult<?> execute()
	{
		HGSearchResult<?> leftResult = left.execute();
		HGSearchResult<?> rightResult = right.execute();		
		if (!leftResult.hasNext() && !rightResult.hasNext())
		{
			leftResult.close();
			rightResult.close();
			return HGSearchResult.EMPTY;
		}
		else if (!leftResult.hasNext())
		{
			leftResult.close();
			return rightResult;
		}
		else if (!rightResult.hasNext())
		{
			rightResult.close();
			return leftResult;
		}
		else
			return new UnionResult(leftResult, rightResult);
	}