aboutsummaryrefslogblamecommitdiff
path: root/csharp/src/ProtocolBuffersLite.Test/TestProtos/UnitTestRpcInteropLite.cs
blob: 189ff0db159965457865c8a46bf143035169d878 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
                                                                                                             
                                         








                                                              

















                                                                               



































                                                                                                               
                            










                                                               
                                     


        















                                                                             
































































                                                                                                                              



























































































































































                                                                                                                                                


















                                                                                                                  
                                        
                                                                  












































                                                                                                          
                                













                                                         
                                         


            













                                                                      































































                                                                                                                               




































































































































































































                                                                                                                                                                                                                        
                            










                                                               
                                     


        










                                                                                                                   
































































                                                                                                                               







































































































































































                                                                                                                                                                                      















































                                                                                                                                 
                            













                                                                 
                                     


        


















                                                                              



































































                                                                                                                                                    

















































































































































































































                                                                                                                                                                       
                                            





                                                                                                                                                              





                                                                                                      
                                                                         




















                                                                                                                                                                      





                                                                                    
                                                                                             












                                                                                                                                                                       
                                                                                                  




                                                                









                                                                                                                              
                                                                                             










                                                                                                                                                                                                                                                 
                                                                                                  








                                   
// Generated by ProtoGen, Version=2.4.1.555, Culture=neutral, PublicKeyToken=55f7125234beb589.  DO NOT EDIT!
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.ProtocolBuffers;
using pbc = global::Google.ProtocolBuffers.Collections;
using pbd = global::Google.ProtocolBuffers.Descriptors;
using scg = global::System.Collections.Generic;
namespace Google.ProtocolBuffers.TestProtos {
  
  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public static partial class UnitTestRpcInteropLite {
  
    #region Extension registration
    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
    }
    #endregion
    #region Static variables
    #endregion
    #region Extensions
    internal static readonly object Descriptor;
    static UnitTestRpcInteropLite() {
      Descriptor = null;
    }
    #endregion
    
  }
  #region Messages
  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class SearchRequest : pb::GeneratedMessageLite<SearchRequest, SearchRequest.Builder> {
    private SearchRequest() { }
    private static readonly SearchRequest defaultInstance = new SearchRequest().MakeReadOnly();
    private static readonly string[] _searchRequestFieldNames = new string[] { "Criteria" };
    private static readonly uint[] _searchRequestFieldTags = new uint[] { 10 };
    public static SearchRequest DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override SearchRequest DefaultInstanceForType {
      get { return DefaultInstance; }
    }
    
    protected override SearchRequest ThisMessage {
      get { return this; }
    }
    
    public const int CriteriaFieldNumber = 1;
    private pbc::PopsicleList<string> criteria_ = new pbc::PopsicleList<string>();
    public scg::IList<string> CriteriaList {
      get { return pbc::Lists.AsReadOnly(criteria_); }
    }
    public int CriteriaCount {
      get { return criteria_.Count; }
    }
    public string GetCriteria(int index) {
      return criteria_[index];
    }
    
    public override bool IsInitialized {
      get {
        return true;
      }
    }
    
    public override void WriteTo(pb::ICodedOutputStream output) {
      CalcSerializedSize();
      string[] field_names = _searchRequestFieldNames;
      if (criteria_.Count > 0) {
        output.WriteStringArray(1, field_names[0], criteria_);
      }
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        return CalcSerializedSize();
      }
    }
    
    private int CalcSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
      
      size = 0;
      {
        int dataSize = 0;
        foreach (string element in CriteriaList) {
          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
        }
        size += dataSize;
        size += 1 * criteria_.Count;
      }
      memoizedSerializedSize = size;
      return size;
    }
    #region Lite runtime methods
    public override int GetHashCode() {
      int hash = GetType().GetHashCode();
      foreach(string i in criteria_)
        hash ^= i.GetHashCode();
      return hash;
    }
    
    public override bool Equals(object obj) {
      SearchRequest other = obj as SearchRequest;
      if (other == null) return false;
      if(criteria_.Count != other.criteria_.Count) return false;
      for(int ix=0; ix < criteria_.Count; ix++)
        if(!criteria_[ix].Equals(other.criteria_[ix])) return false;
      return true;
    }
    
    public override void PrintTo(global::System.IO.TextWriter writer) {
      PrintField("Criteria", criteria_, writer);
    }
    #endregion
    
    public static SearchRequest ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SearchRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SearchRequest ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SearchRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SearchRequest ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SearchRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static SearchRequest ParseDelimitedFrom(global::System.IO.Stream input) {
      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
    }
    public static SearchRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
    }
    public static SearchRequest ParseFrom(pb::ICodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SearchRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    private SearchRequest MakeReadOnly() {
      criteria_.MakeReadOnly();
      return this;
    }
    
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder ToBuilder() { return CreateBuilder(this); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(SearchRequest prototype) {
      return new Builder(prototype);
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class Builder : pb::GeneratedBuilderLite<SearchRequest, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {
        result = DefaultInstance;
        resultIsReadOnly = true;
      }
      internal Builder(SearchRequest cloneFrom) {
        result = cloneFrom;
        resultIsReadOnly = true;
      }
      
      private bool resultIsReadOnly;
      private SearchRequest result;
      
      private SearchRequest PrepareBuilder() {
        if (resultIsReadOnly) {
          SearchRequest original = result;
          result = new SearchRequest();
          resultIsReadOnly = false;
          MergeFrom(original);
        }
        return result;
      }
      
      public override bool IsInitialized {
        get { return result.IsInitialized; }
      }
      
      protected override SearchRequest MessageBeingBuilt {
        get { return PrepareBuilder(); }
      }
      
      public override Builder Clear() {
        result = DefaultInstance;
        resultIsReadOnly = true;
        return this;
      }
      
      public override Builder Clone() {
        if (resultIsReadOnly) {
          return new Builder(result);
        } else {
          return new Builder().MergeFrom(result);
        }
      }
      
      public override SearchRequest DefaultInstanceForType {
        get { return global::Google.ProtocolBuffers.TestProtos.SearchRequest.DefaultInstance; }
      }
      
      public override SearchRequest BuildPartial() {
        if (resultIsReadOnly) {
          return result;
        }
        resultIsReadOnly = true;
        return result.MakeReadOnly();
      }
      
      public override Builder MergeFrom(pb::IMessageLite other) {
        if (other is SearchRequest) {
          return MergeFrom((SearchRequest) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(SearchRequest other) {
        if (other == global::Google.ProtocolBuffers.TestProtos.SearchRequest.DefaultInstance) return this;
        PrepareBuilder();
        if (other.criteria_.Count != 0) {
          result.criteria_.Add(other.criteria_);
        }
        return this;
      }
      
      public override Builder MergeFrom(pb::ICodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        PrepareBuilder();
        uint tag;
        string field_name;
        while (input.ReadTag(out tag, out field_name)) {
          if(tag == 0 && field_name != null) {
            int field_ordinal = global::System.Array.BinarySearch(_searchRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
            if(field_ordinal >= 0)
              tag = _searchRequestFieldTags[field_ordinal];
            else {
              ParseUnknownField(input, extensionRegistry, tag, field_name);
              continue;
            }
          }
          switch (tag) {
            case 0: {
              throw pb::InvalidProtocolBufferException.InvalidTag();
            }
            default: {
              if (pb::WireFormat.IsEndGroupTag(tag)) {
                return this;
              }
              ParseUnknownField(input, extensionRegistry, tag, field_name);
              break;
            }
            case 10: {
              input.ReadStringArray(tag, field_name, result.criteria_);
              break;
            }
          }
        }
        
        return this;
      }
      
      
      public pbc::IPopsicleList<string> CriteriaList {
        get { return PrepareBuilder().criteria_; }
      }
      public int CriteriaCount {
        get { return result.CriteriaCount; }
      }
      public string GetCriteria(int index) {
        return result.GetCriteria(index);
      }
      public Builder SetCriteria(int index, string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        PrepareBuilder();
        result.criteria_[index] = value;
        return this;
      }
      public Builder AddCriteria(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        PrepareBuilder();
        result.criteria_.Add(value);
        return this;
      }
      public Builder AddRangeCriteria(scg::IEnumerable<string> values) {
        PrepareBuilder();
        result.criteria_.Add(values);
        return this;
      }
      public Builder ClearCriteria() {
        PrepareBuilder();
        result.criteria_.Clear();
        return this;
      }
    }
    static SearchRequest() {
      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestRpcInteropLite.Descriptor, null);
    }
  }
  
  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class SearchResponse : pb::GeneratedMessageLite<SearchResponse, SearchResponse.Builder> {
    private SearchResponse() { }
    private static readonly SearchResponse defaultInstance = new SearchResponse().MakeReadOnly();
    private static readonly string[] _searchResponseFieldNames = new string[] { "results" };
    private static readonly uint[] _searchResponseFieldTags = new uint[] { 10 };
    public static SearchResponse DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override SearchResponse DefaultInstanceForType {
      get { return DefaultInstance; }
    }
    
    protected override SearchResponse ThisMessage {
      get { return this; }
    }
    
    #region Nested types
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class Types {
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      public sealed partial class ResultItem : pb::GeneratedMessageLite<ResultItem, ResultItem.Builder> {
        private ResultItem() { }
        private static readonly ResultItem defaultInstance = new ResultItem().MakeReadOnly();
        private static readonly string[] _resultItemFieldNames = new string[] { "name", "url" };
        private static readonly uint[] _resultItemFieldTags = new uint[] { 18, 10 };
        public static ResultItem DefaultInstance {
          get { return defaultInstance; }
        }
        
        public override ResultItem DefaultInstanceForType {
          get { return DefaultInstance; }
        }
        
        protected override ResultItem ThisMessage {
          get { return this; }
        }
        
        public const int UrlFieldNumber = 1;
        private bool hasUrl;
        private string url_ = "";
        public bool HasUrl {
          get { return hasUrl; }
        }
        public string Url {
          get { return url_; }
        }
        
        public const int NameFieldNumber = 2;
        private bool hasName;
        private string name_ = "";
        public bool HasName {
          get { return hasName; }
        }
        public string Name {
          get { return name_; }
        }
        
        public override bool IsInitialized {
          get {
            if (!hasUrl) return false;
            return true;
          }
        }
        
        public override void WriteTo(pb::ICodedOutputStream output) {
          CalcSerializedSize();
          string[] field_names = _resultItemFieldNames;
          if (hasUrl) {
            output.WriteString(1, field_names[1], Url);
          }
          if (hasName) {
            output.WriteString(2, field_names[0], Name);
          }
        }
        
        private int memoizedSerializedSize = -1;
        public override int SerializedSize {
          get {
            int size = memoizedSerializedSize;
            if (size != -1) return size;
            return CalcSerializedSize();
          }
        }
        
        private int CalcSerializedSize() {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
          
          size = 0;
          if (hasUrl) {
            size += pb::CodedOutputStream.ComputeStringSize(1, Url);
          }
          if (hasName) {
            size += pb::CodedOutputStream.ComputeStringSize(2, Name);
          }
          memoizedSerializedSize = size;
          return size;
        }
        #region Lite runtime methods
        public override int GetHashCode() {
          int hash = GetType().GetHashCode();
          if (hasUrl) hash ^= url_.GetHashCode();
          if (hasName) hash ^= name_.GetHashCode();
          return hash;
        }
        
        public override bool Equals(object obj) {
          ResultItem other = obj as ResultItem;
          if (other == null) return false;
          if (hasUrl != other.hasUrl || (hasUrl && !url_.Equals(other.url_))) return false;
          if (hasName != other.hasName || (hasName && !name_.Equals(other.name_))) return false;
          return true;
        }
        
        public override void PrintTo(global::System.IO.TextWriter writer) {
          PrintField("url", hasUrl, url_, writer);
          PrintField("name", hasName, name_, writer);
        }
        #endregion
        
        public static ResultItem ParseFrom(pb::ByteString data) {
          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
        }
        public static ResultItem ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
        }
        public static ResultItem ParseFrom(byte[] data) {
          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
        }
        public static ResultItem ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
        }
        public static ResultItem ParseFrom(global::System.IO.Stream input) {
          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
        }
        public static ResultItem ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
        }
        public static ResultItem ParseDelimitedFrom(global::System.IO.Stream input) {
          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
        }
        public static ResultItem ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
        }
        public static ResultItem ParseFrom(pb::ICodedInputStream input) {
          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
        }
        public static ResultItem ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
        }
        private ResultItem MakeReadOnly() {
          return this;
        }
        
        public static Builder CreateBuilder() { return new Builder(); }
        public override Builder ToBuilder() { return CreateBuilder(this); }
        public override Builder CreateBuilderForType() { return new Builder(); }
        public static Builder CreateBuilder(ResultItem prototype) {
          return new Builder(prototype);
        }
        
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public sealed partial class Builder : pb::GeneratedBuilderLite<ResultItem, Builder> {
          protected override Builder ThisBuilder {
            get { return this; }
          }
          public Builder() {
            result = DefaultInstance;
            resultIsReadOnly = true;
          }
          internal Builder(ResultItem cloneFrom) {
            result = cloneFrom;
            resultIsReadOnly = true;
          }
          
          private bool resultIsReadOnly;
          private ResultItem result;
          
          private ResultItem PrepareBuilder() {
            if (resultIsReadOnly) {
              ResultItem original = result;
              result = new ResultItem();
              resultIsReadOnly = false;
              MergeFrom(original);
            }
            return result;
          }
          
          public override bool IsInitialized {
            get { return result.IsInitialized; }
          }
          
          protected override ResultItem MessageBeingBuilt {
            get { return PrepareBuilder(); }
          }
          
          public override Builder Clear() {
            result = DefaultInstance;
            resultIsReadOnly = true;
            return this;
          }
          
          public override Builder Clone() {
            if (resultIsReadOnly) {
              return new Builder(result);
            } else {
              return new Builder().MergeFrom(result);
            }
          }
          
          public override ResultItem DefaultInstanceForType {
            get { return global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem.DefaultInstance; }
          }
          
          public override ResultItem BuildPartial() {
            if (resultIsReadOnly) {
              return result;
            }
            resultIsReadOnly = true;
            return result.MakeReadOnly();
          }
          
          public override Builder MergeFrom(pb::IMessageLite other) {
            if (other is ResultItem) {
              return MergeFrom((ResultItem) other);
            } else {
              base.MergeFrom(other);
              return this;
            }
          }
          
          public override Builder MergeFrom(ResultItem other) {
            if (other == global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem.DefaultInstance) return this;
            PrepareBuilder();
            if (other.HasUrl) {
              Url = other.Url;
            }
            if (other.HasName) {
              Name = other.Name;
            }
            return this;
          }
          
          public override Builder MergeFrom(pb::ICodedInputStream input) {
            return MergeFrom(input, pb::ExtensionRegistry.Empty);
          }
          
          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
            PrepareBuilder();
            uint tag;
            string field_name;
            while (input.ReadTag(out tag, out field_name)) {
              if(tag == 0 && field_name != null) {
                int field_ordinal = global::System.Array.BinarySearch(_resultItemFieldNames, field_name, global::System.StringComparer.Ordinal);
                if(field_ordinal >= 0)
                  tag = _resultItemFieldTags[field_ordinal];
                else {
                  ParseUnknownField(input, extensionRegistry, tag, field_name);
                  continue;
                }
              }
              switch (tag) {
                case 0: {
                  throw pb::InvalidProtocolBufferException.InvalidTag();
                }
                default: {
                  if (pb::WireFormat.IsEndGroupTag(tag)) {
                    return this;
                  }
                  ParseUnknownField(input, extensionRegistry, tag, field_name);
                  break;
                }
                case 10: {
                  result.hasUrl = input.ReadString(ref result.url_);
                  break;
                }
                case 18: {
                  result.hasName = input.ReadString(ref result.name_);
                  break;
                }
              }
            }
            
            return this;
          }
          
          
          public bool HasUrl {
            get { return result.hasUrl; }
          }
          public string Url {
            get { return result.Url; }
            set { SetUrl(value); }
          }
          public Builder SetUrl(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            PrepareBuilder();
            result.hasUrl = true;
            result.url_ = value;
            return this;
          }
          public Builder ClearUrl() {
            PrepareBuilder();
            result.hasUrl = false;
            result.url_ = "";
            return this;
          }
          
          public bool HasName {
            get { return result.hasName; }
          }
          public string Name {
            get { return result.Name; }
            set { SetName(value); }
          }
          public Builder SetName(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            PrepareBuilder();
            result.hasName = true;
            result.name_ = value;
            return this;
          }
          public Builder ClearName() {
            PrepareBuilder();
            result.hasName = false;
            result.name_ = "";
            return this;
          }
        }
        static ResultItem() {
          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestRpcInteropLite.Descriptor, null);
        }
      }
      
    }
    #endregion
    
    public const int ResultsFieldNumber = 1;
    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem> results_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem>();
    public scg::IList<global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem> ResultsList {
      get { return results_; }
    }
    public int ResultsCount {
      get { return results_.Count; }
    }
    public global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem GetResults(int index) {
      return results_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem element in ResultsList) {
          if (!element.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::ICodedOutputStream output) {
      CalcSerializedSize();
      string[] field_names = _searchResponseFieldNames;
      if (results_.Count > 0) {
        output.WriteMessageArray(1, field_names[0], results_);
      }
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        return CalcSerializedSize();
      }
    }
    
    private int CalcSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
      
      size = 0;
      foreach (global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem element in ResultsList) {
        size += pb::CodedOutputStream.ComputeMessageSize(1, element);
      }
      memoizedSerializedSize = size;
      return size;
    }
    #region Lite runtime methods
    public override int GetHashCode() {
      int hash = GetType().GetHashCode();
      foreach(global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem i in results_)
        hash ^= i.GetHashCode();
      return hash;
    }
    
    public override bool Equals(object obj) {
      SearchResponse other = obj as SearchResponse;
      if (other == null) return false;
      if(results_.Count != other.results_.Count) return false;
      for(int ix=0; ix < results_.Count; ix++)
        if(!results_[ix].Equals(other.results_[ix])) return false;
      return true;
    }
    
    public override void PrintTo(global::System.IO.TextWriter writer) {
      PrintField("results", results_, writer);
    }
    #endregion
    
    public static SearchResponse ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SearchResponse ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SearchResponse ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SearchResponse ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SearchResponse ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SearchResponse ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static SearchResponse ParseDelimitedFrom(global::System.IO.Stream input) {
      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
    }
    public static SearchResponse ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
    }
    public static SearchResponse ParseFrom(pb::ICodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SearchResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    private SearchResponse MakeReadOnly() {
      results_.MakeReadOnly();
      return this;
    }
    
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder ToBuilder() { return CreateBuilder(this); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(SearchResponse prototype) {
      return new Builder(prototype);
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class Builder : pb::GeneratedBuilderLite<SearchResponse, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {
        result = DefaultInstance;
        resultIsReadOnly = true;
      }
      internal Builder(SearchResponse cloneFrom) {
        result = cloneFrom;
        resultIsReadOnly = true;
      }
      
      private bool resultIsReadOnly;
      private SearchResponse result;
      
      private SearchResponse PrepareBuilder() {
        if (resultIsReadOnly) {
          SearchResponse original = result;
          result = new SearchResponse();
          resultIsReadOnly = false;
          MergeFrom(original);
        }
        return result;
      }
      
      public override bool IsInitialized {
        get { return result.IsInitialized; }
      }
      
      protected override SearchResponse MessageBeingBuilt {
        get { return PrepareBuilder(); }
      }
      
      public override Builder Clear() {
        result = DefaultInstance;
        resultIsReadOnly = true;
        return this;
      }
      
      public override Builder Clone() {
        if (resultIsReadOnly) {
          return new Builder(result);
        } else {
          return new Builder().MergeFrom(result);
        }
      }
      
      public override SearchResponse DefaultInstanceForType {
        get { return global::Google.ProtocolBuffers.TestProtos.SearchResponse.DefaultInstance; }
      }
      
      public override SearchResponse BuildPartial() {
        if (resultIsReadOnly) {
          return result;
        }
        resultIsReadOnly = true;
        return result.MakeReadOnly();
      }
      
      public override Builder MergeFrom(pb::IMessageLite other) {
        if (other is SearchResponse) {
          return MergeFrom((SearchResponse) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(SearchResponse other) {
        if (other == global::Google.ProtocolBuffers.TestProtos.SearchResponse.DefaultInstance) return this;
        PrepareBuilder();
        if (other.results_.Count != 0) {
          result.results_.Add(other.results_);
        }
        return this;
      }
      
      public override Builder MergeFrom(pb::ICodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        PrepareBuilder();
        uint tag;
        string field_name;
        while (input.ReadTag(out tag, out field_name)) {
          if(tag == 0 && field_name != null) {
            int field_ordinal = global::System.Array.BinarySearch(_searchResponseFieldNames, field_name, global::System.StringComparer.Ordinal);
            if(field_ordinal >= 0)
              tag = _searchResponseFieldTags[field_ordinal];
            else {
              ParseUnknownField(input, extensionRegistry, tag, field_name);
              continue;
            }
          }
          switch (tag) {
            case 0: {
              throw pb::InvalidProtocolBufferException.InvalidTag();
            }
            default: {
              if (pb::WireFormat.IsEndGroupTag(tag)) {
                return this;
              }
              ParseUnknownField(input, extensionRegistry, tag, field_name);
              break;
            }
            case 10: {
              input.ReadMessageArray(tag, field_name, result.results_, global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem.DefaultInstance, extensionRegistry);
              break;
            }
          }
        }
        
        return this;
      }
      
      
      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem> ResultsList {
        get { return PrepareBuilder().results_; }
      }
      public int ResultsCount {
        get { return result.ResultsCount; }
      }
      public global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem GetResults(int index) {
        return result.GetResults(index);
      }
      public Builder SetResults(int index, global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        PrepareBuilder();
        result.results_[index] = value;
        return this;
      }
      public Builder SetResults(int index, global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        PrepareBuilder();
        result.results_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddResults(global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        PrepareBuilder();
        result.results_.Add(value);
        return this;
      }
      public Builder AddResults(global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        PrepareBuilder();
        result.results_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeResults(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem> values) {
        PrepareBuilder();
        result.results_.Add(values);
        return this;
      }
      public Builder ClearResults() {
        PrepareBuilder();
        result.results_.Clear();
        return this;
      }
    }
    static SearchResponse() {
      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestRpcInteropLite.Descriptor, null);
    }
  }
  
  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class RefineSearchRequest : pb::GeneratedMessageLite<RefineSearchRequest, RefineSearchRequest.Builder> {
    private RefineSearchRequest() { }
    private static readonly RefineSearchRequest defaultInstance = new RefineSearchRequest().MakeReadOnly();
    private static readonly string[] _refineSearchRequestFieldNames = new string[] { "Criteria", "previous_results" };
    private static readonly uint[] _refineSearchRequestFieldTags = new uint[] { 10, 18 };
    public static RefineSearchRequest DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override RefineSearchRequest DefaultInstanceForType {
      get { return DefaultInstance; }
    }
    
    protected override RefineSearchRequest ThisMessage {
      get { return this; }
    }
    
    public const int CriteriaFieldNumber = 1;
    private pbc::PopsicleList<string> criteria_ = new pbc::PopsicleList<string>();
    public scg::IList<string> CriteriaList {
      get { return pbc::Lists.AsReadOnly(criteria_); }
    }
    public int CriteriaCount {
      get { return criteria_.Count; }
    }
    public string GetCriteria(int index) {
      return criteria_[index];
    }
    
    public const int PreviousResultsFieldNumber = 2;
    private bool hasPreviousResults;
    private global::Google.ProtocolBuffers.TestProtos.SearchResponse previousResults_;
    public bool HasPreviousResults {
      get { return hasPreviousResults; }
    }
    public global::Google.ProtocolBuffers.TestProtos.SearchResponse PreviousResults {
      get { return previousResults_ ?? global::Google.ProtocolBuffers.TestProtos.SearchResponse.DefaultInstance; }
    }
    
    public override bool IsInitialized {
      get {
        if (!hasPreviousResults) return false;
        if (!PreviousResults.IsInitialized) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::ICodedOutputStream output) {
      CalcSerializedSize();
      string[] field_names = _refineSearchRequestFieldNames;
      if (criteria_.Count > 0) {
        output.WriteStringArray(1, field_names[0], criteria_);
      }
      if (hasPreviousResults) {
        output.WriteMessage(2, field_names[1], PreviousResults);
      }
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        return CalcSerializedSize();
      }
    }
    
    private int CalcSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
      
      size = 0;
      {
        int dataSize = 0;
        foreach (string element in CriteriaList) {
          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
        }
        size += dataSize;
        size += 1 * criteria_.Count;
      }
      if (hasPreviousResults) {
        size += pb::CodedOutputStream.ComputeMessageSize(2, PreviousResults);
      }
      memoizedSerializedSize = size;
      return size;
    }
    #region Lite runtime methods
    public override int GetHashCode() {
      int hash = GetType().GetHashCode();
      foreach(string i in criteria_)
        hash ^= i.GetHashCode();
      if (hasPreviousResults) hash ^= previousResults_.GetHashCode();
      return hash;
    }
    
    public override bool Equals(object obj) {
      RefineSearchRequest other = obj as RefineSearchRequest;
      if (other == null) return false;
      if(criteria_.Count != other.criteria_.Count) return false;
      for(int ix=0; ix < criteria_.Count; ix++)
        if(!criteria_[ix].Equals(other.criteria_[ix])) return false;
      if (hasPreviousResults != other.hasPreviousResults || (hasPreviousResults && !previousResults_.Equals(other.previousResults_))) return false;
      return true;
    }
    
    public override void PrintTo(global::System.IO.TextWriter writer) {
      PrintField("Criteria", criteria_, writer);
      PrintField("previous_results", hasPreviousResults, previousResults_, writer);
    }
    #endregion
    
    public static RefineSearchRequest ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static RefineSearchRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static RefineSearchRequest ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static RefineSearchRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static RefineSearchRequest ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static RefineSearchRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static RefineSearchRequest ParseDelimitedFrom(global::System.IO.Stream input) {
      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
    }
    public static RefineSearchRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
    }
    public static RefineSearchRequest ParseFrom(pb::ICodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static RefineSearchRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    private RefineSearchRequest MakeReadOnly() {
      criteria_.MakeReadOnly();
      return this;
    }
    
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder ToBuilder() { return CreateBuilder(this); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(RefineSearchRequest prototype) {
      return new Builder(prototype);
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class Builder : pb::GeneratedBuilderLite<RefineSearchRequest, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {
        result = DefaultInstance;
        resultIsReadOnly = true;
      }
      internal Builder(RefineSearchRequest cloneFrom) {
        result = cloneFrom;
        resultIsReadOnly = true;
      }
      
      private bool resultIsReadOnly;
      private RefineSearchRequest result;
      
      private RefineSearchRequest PrepareBuilder() {
        if (resultIsReadOnly) {
          RefineSearchRequest original = result;
          result = new RefineSearchRequest();
          resultIsReadOnly = false;
          MergeFrom(original);
        }
        return result;
      }
      
      public override bool IsInitialized {
        get { return result.IsInitialized; }
      }
      
      protected override RefineSearchRequest MessageBeingBuilt {
        get { return PrepareBuilder(); }
      }
      
      public override Builder Clear() {
        result = DefaultInstance;
        resultIsReadOnly = true;
        return this;
      }
      
      public override Builder Clone() {
        if (resultIsReadOnly) {
          return new Builder(result);
        } else {
          return new Builder().MergeFrom(result);
        }
      }
      
      public override RefineSearchRequest DefaultInstanceForType {
        get { return global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest.DefaultInstance; }
      }
      
      public override RefineSearchRequest BuildPartial() {
        if (resultIsReadOnly) {
          return result;
        }
        resultIsReadOnly = true;
        return result.MakeReadOnly();
      }
      
      public override Builder MergeFrom(pb::IMessageLite other) {
        if (other is RefineSearchRequest) {
          return MergeFrom((RefineSearchRequest) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(RefineSearchRequest other) {
        if (other == global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest.DefaultInstance) return this;
        PrepareBuilder();
        if (other.criteria_.Count != 0) {
          result.criteria_.Add(other.criteria_);
        }
        if (other.HasPreviousResults) {
          MergePreviousResults(other.PreviousResults);
        }
        return this;
      }
      
      public override Builder MergeFrom(pb::ICodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        PrepareBuilder();
        uint tag;
        string field_name;
        while (input.ReadTag(out tag, out field_name)) {
          if(tag == 0 && field_name != null) {
            int field_ordinal = global::System.Array.BinarySearch(_refineSearchRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
            if(field_ordinal >= 0)
              tag = _refineSearchRequestFieldTags[field_ordinal];
            else {
              ParseUnknownField(input, extensionRegistry, tag, field_name);
              continue;
            }
          }
          switch (tag) {
            case 0: {
              throw pb::InvalidProtocolBufferException.InvalidTag();
            }
            default: {
              if (pb::WireFormat.IsEndGroupTag(tag)) {
                return this;
              }
              ParseUnknownField(input, extensionRegistry, tag, field_name);
              break;
            }
            case 10: {
              input.ReadStringArray(tag, field_name, result.criteria_);
              break;
            }
            case 18: {
              global::Google.ProtocolBuffers.TestProtos.SearchResponse.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.SearchResponse.CreateBuilder();
              if (result.hasPreviousResults) {
                subBuilder.MergeFrom(PreviousResults);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              PreviousResults = subBuilder.BuildPartial();
              break;
            }
          }
        }
        
        return this;
      }
      
      
      public pbc::IPopsicleList<string> CriteriaList {
        get { return PrepareBuilder().criteria_; }
      }
      public int CriteriaCount {
        get { return result.CriteriaCount; }
      }
      public string GetCriteria(int index) {
        return result.GetCriteria(index);
      }
      public Builder SetCriteria(int index, string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        PrepareBuilder();
        result.criteria_[index] = value;
        return this;
      }
      public Builder AddCriteria(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        PrepareBuilder();
        result.criteria_.Add(value);
        return this;
      }
      public Builder AddRangeCriteria(scg::IEnumerable<string> values) {
        PrepareBuilder();
        result.criteria_.Add(values);
        return this;
      }
      public Builder ClearCriteria() {
        PrepareBuilder();
        result.criteria_.Clear();
        return this;
      }
      
      public bool HasPreviousResults {
       get { return result.hasPreviousResults; }
      }
      public global::Google.ProtocolBuffers.TestProtos.SearchResponse PreviousResults {
        get { return result.PreviousResults; }
        set { SetPreviousResults(value); }
      }
      public Builder SetPreviousResults(global::Google.ProtocolBuffers.TestProtos.SearchResponse value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        PrepareBuilder();
        result.hasPreviousResults = true;
        result.previousResults_ = value;
        return this;
      }
      public Builder SetPreviousResults(global::Google.ProtocolBuffers.TestProtos.SearchResponse.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        PrepareBuilder();
        result.hasPreviousResults = true;
        result.previousResults_ = builderForValue.Build();
        return this;
      }
      public Builder MergePreviousResults(global::Google.ProtocolBuffers.TestProtos.SearchResponse value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        PrepareBuilder();
        if (result.hasPreviousResults &&
            result.previousResults_ != global::Google.ProtocolBuffers.TestProtos.SearchResponse.DefaultInstance) {
            result.previousResults_ = global::Google.ProtocolBuffers.TestProtos.SearchResponse.CreateBuilder(result.previousResults_).MergeFrom(value).BuildPartial();
        } else {
          result.previousResults_ = value;
        }
        result.hasPreviousResults = true;
        return this;
      }
      public Builder ClearPreviousResults() {
        PrepareBuilder();
        result.hasPreviousResults = false;
        result.previousResults_ = null;
        return this;
      }
    }
    static RefineSearchRequest() {
      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestRpcInteropLite.Descriptor, null);
    }
  }
  
  #endregion
  
  #region Services
  public partial interface ISearchService {
    global::Google.ProtocolBuffers.TestProtos.SearchResponse Search(global::Google.ProtocolBuffers.TestProtos.SearchRequest searchRequest);
    global::Google.ProtocolBuffers.TestProtos.SearchResponse RefineSearch(global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest refineSearchRequest);
  }
  
  [global::System.CLSCompliant(false)]
  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public partial class SearchService : ISearchService, pb::IRpcDispatch, global::System.IDisposable {
    private readonly bool dispose;
    private readonly pb::IRpcDispatch dispatch;
    public SearchService(pb::IRpcDispatch dispatch) : this(dispatch, true) {
    }
    public SearchService(pb::IRpcDispatch dispatch, bool dispose) {
      pb::ThrowHelper.ThrowIfNull(this.dispatch = dispatch, "dispatch");
      this.dispose = dispose && dispatch is global::System.IDisposable;
    }
    
    public void Dispose() {
      if (dispose) ((global::System.IDisposable)dispatch).Dispose();
    }
    
    TMessage pb::IRpcDispatch.CallMethod<TMessage, TBuilder>(string method, pb::IMessageLite request, pb::IBuilderLite<TMessage, TBuilder> response) {
      return dispatch.CallMethod(method, request, response);
    }
    
    public global::Google.ProtocolBuffers.TestProtos.SearchResponse Search(global::Google.ProtocolBuffers.TestProtos.SearchRequest searchRequest) {
       return dispatch.CallMethod("Search", searchRequest, global::Google.ProtocolBuffers.TestProtos.SearchResponse.CreateBuilder());
    }
    
    public global::Google.ProtocolBuffers.TestProtos.SearchResponse RefineSearch(global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest refineSearchRequest) {
       return dispatch.CallMethod("RefineSearch", refineSearchRequest, global::Google.ProtocolBuffers.TestProtos.SearchResponse.CreateBuilder());
    }
    
    [global::System.CLSCompliant(false)]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public partial class Dispatch : pb::IRpcDispatch, global::System.IDisposable {
      private readonly bool dispose;
      private readonly ISearchService implementation;
      public Dispatch(ISearchService implementation) : this(implementation, true) {
      }
      public Dispatch(ISearchService implementation, bool dispose) {
        pb::ThrowHelper.ThrowIfNull(this.implementation = implementation, "implementation");
        this.dispose = dispose && implementation is global::System.IDisposable;
      }
      
      public void Dispose() {
        if (dispose) ((global::System.IDisposable)implementation).Dispose();
      }
      
      public TMessage CallMethod<TMessage, TBuilder>(string methodName, pb::IMessageLite request, pb::IBuilderLite<TMessage, TBuilder> response)
        where TMessage : pb::IMessageLite<TMessage, TBuilder>
        where TBuilder : pb::IBuilderLite<TMessage, TBuilder> {
        switch(methodName) {
          case "Search": return response.MergeFrom(implementation.Search((global::Google.ProtocolBuffers.TestProtos.SearchRequest)request)).Build();
          case "RefineSearch": return response.MergeFrom(implementation.RefineSearch((global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest)request)).Build();
          default: throw pb::ThrowHelper.CreateMissingMethod(typeof(ISearchService), methodName);
        }
      }
    }
    [global::System.CLSCompliant(false)]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public partial class ServerStub : pb::IRpcServerStub, global::System.IDisposable {
      private readonly bool dispose;
      private readonly pb::IRpcDispatch implementation;
      public ServerStub(ISearchService implementation) : this(implementation, true) {
      }
      public ServerStub(ISearchService implementation, bool dispose) : this(new Dispatch(implementation, dispose), dispose) {
      }
      public ServerStub(pb::IRpcDispatch implementation) : this(implementation, true) {
      }
      public ServerStub(pb::IRpcDispatch implementation, bool dispose) {
        pb::ThrowHelper.ThrowIfNull(this.implementation = implementation, "implementation");
        this.dispose = dispose && implementation is global::System.IDisposable;
      }
      
      public void Dispose() {
        if (dispose) ((global::System.IDisposable)implementation).Dispose();
      }
      
      public pb::IMessageLite CallMethod(string methodName, pb::ICodedInputStream input, pb::ExtensionRegistry registry) {
        switch(methodName) {
          case "Search": return implementation.CallMethod(methodName, global::Google.ProtocolBuffers.TestProtos.SearchRequest.ParseFrom(input, registry), global::Google.ProtocolBuffers.TestProtos.SearchResponse.CreateBuilder());
          case "RefineSearch": return implementation.CallMethod(methodName, global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest.ParseFrom(input, registry), global::Google.ProtocolBuffers.TestProtos.SearchResponse.CreateBuilder());
          default: throw pb::ThrowHelper.CreateMissingMethod(typeof(ISearchService), methodName);
        }
      }
    }
  }
  #endregion
  
}

#endregion Designer generated code