public Operations(IList<Type> types)
        {
            Types = types;
            var typeNames = types.Select(x => x.Name);
            Names = new List<string>();

            OneWayOperations = new Operations();
            ReplyOperations = new Operations();

            foreach (var type in types)
            {
                if (type.Name.EndsWith(ResponseSuffix)) continue;

                Names.Add(type.Name);

                var hasResponse = typeNames.Contains(type.Name + ResponseSuffix);
                if (hasResponse)
                {
                    ReplyOperations.Add(type);
                }
                else
                {
                    OneWayOperations.Add(type);
                }
            }
            Names.Sort();
        }