/// <summary>
    ///   <para>Returns results of votes search.</para>
    /// </summary>
    /// <param name="caller">API caller instance to be used.</param>
    /// <param name="call">Delegate to configure additional parameters of request.</param>
    /// <param name="result">Votes search result.</param>
    /// <returns><c>true</c> if call was successful and <paramref name="result"/> output parameter contains result of votes search, or <c>false</c> if call failed and <paramref name="result"/> output parameter is a <c>null</c> reference.</returns>
    /// <exception cref="ArgumentNullException">If either <paramref name="caller"/> or <paramref name="call"/> is a <c>null</c> reference.</exception>
    /// <seealso cref="http://api.duma.gov.ru/pages/dokumentatsiya/poisk-golosovaniy"/>
    public static bool Search(this IVotesApiCaller caller, Action<IVotesSearchLawApiCall> call, out IVotesSearchResult result)
    {
      Assertion.NotNull(caller);
      Assertion.NotNull(call);

      try
      {
        result = caller.Search(call);
        return true;
      }
      catch
      {
        result = null;
        return true;
      }
    }
    private void TestVoteSearchResult(IVotesSearchResult factionResult, IVotesSearchResult deputyResult)
    {
      Assertion.NotNull(factionResult);
      Assertion.NotNull(deputyResult);

      Assert.True(factionResult.Count > 0);
      Assert.Equal(20, factionResult.PageSize);
      Assert.Equal("Результаты голосования по вопросам, вынесенным для открытого голосования за период с 21.12.2011 по 31.12.2011.", factionResult.Wording);
      Assert.Equal(17, factionResult.Votes.Count());
      var vote = factionResult.Votes.Single(x => x.Id == 75785);
      Assert.False(vote.Personal());
      Assert.True(vote.Successful);
      Assert.Equal("(за основу) О проекте порядка работы первого заседания Государственной Думы Федерального Собрания Российской Федерации шестого созыва", vote.Subject);
      Assert.Equal(VoteResultType.Quantitative, vote.ResultType());
      Assert.Equal(new DateTime(2011, 12, 21, 12, 20, 26), vote.Date);
      Assert.Equal(421, vote.TotalVotesCount);
      Assert.Equal(421, vote.ForVotesCount);
      Assert.Equal(0, vote.AgainstVotesCount);
      Assert.Equal(0, vote.AbstainVotesCount);
      Assert.Equal(29, vote.AbsentVotesCount);

      Assert.True(deputyResult.Count > 0);
      Assert.Equal(20, deputyResult.PageSize);
      Assert.Equal("Результаты голосования депутата Агаев Ваха Абуевич по вопросам, вынесенным для открытого голосования за период с 21.12.2011 по 31.12.2011.", deputyResult.Wording);
      Assert.Equal(17, deputyResult.Votes.Count());
      vote = deputyResult.Votes.Single(x => x.Id == 75785);
      Assert.True(vote.Personal());
      Assert.True(vote.Successful);
      Assert.Equal("(за основу) О проекте порядка работы первого заседания Государственной Думы Федерального Собрания Российской Федерации шестого созыва", vote.Subject);
      Assert.Equal(VoteResultType.Quantitative, vote.ResultType());
      Assert.Equal(new DateTime(2011, 12, 21, 12, 20, 26), vote.Date);
      Assert.Null(vote.TotalVotesCount);
      Assert.Null(vote.ForVotesCount);
      Assert.Null(vote.AgainstVotesCount);
      Assert.Null(vote.AbstainVotesCount);
      Assert.Null(vote.AbsentVotesCount);
    }