diff --git a/.gitignore b/.gitignore
index 07d51bc..4818601 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,9 @@ temp.*
 *.swp
 doc/_build
 MANIFEST
+
+# Files generated by protobuf.
+distributions/io/schema_pb2.py
+include/distributions/io/schema.pb.cc
+include/distributions/io/schema.pb.h
+src/io/schema.pb.cc
diff --git a/distributions/io/schema_pb2.py b/distributions/io/schema_pb2.py
deleted file mode 100644
index 1e7205e..0000000
--- a/distributions/io/schema_pb2.py
+++ /dev/null
@@ -1,1087 +0,0 @@
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-from google.protobuf import descriptor
-from google.protobuf import message
-from google.protobuf import reflection
-# @@protoc_insertion_point(imports)
-
-
-
-DESCRIPTOR = descriptor.FileDescriptor(
-  name='distributions/io/schema.proto',
-  package='protobuf.distributions',
-  serialized_pb='\n\x1d\x64istributions/io/schema.proto\x12\x16protobuf.distributions\"\xdd\x01\n\nClustering\x12@\n\npitman_yor\x18\x01 \x01(\x0b\x32,.protobuf.distributions.Clustering.PitmanYor\x12\x42\n\x0blow_entropy\x18\x02 \x01(\x0b\x32-.protobuf.distributions.Clustering.LowEntropy\x1a%\n\tPitmanYor\x12\r\n\x05\x61lpha\x18\x01 \x02(\x02\x12\t\n\x01\x64\x18\x02 \x02(\x02\x1a\"\n\nLowEntropy\x12\x14\n\x0c\x64\x61taset_size\x18\x01 \x02(\x04\"]\n\rBetaBernoulli\x1a%\n\x06Shared\x12\r\n\x05\x61lpha\x18\x01 \x02(\x02\x12\x0c\n\x04\x62\x65ta\x18\x02 \x02(\x02\x1a%\n\x05Group\x12\r\n\x05heads\x18\x01 \x02(\x04\x12\r\n\x05tails\x18\x02 \x02(\x04\"F\n\x11\x44irichletDiscrete\x1a\x18\n\x06Shared\x12\x0e\n\x06\x61lphas\x18\x01 \x03(\x02\x1a\x17\n\x05Group\x12\x0e\n\x06\x63ounts\x18\x01 \x03(\x04\"\x98\x01\n\x18\x44irichletProcessDiscrete\x1aU\n\x06Shared\x12\r\n\x05gamma\x18\x01 \x02(\x02\x12\r\n\x05\x61lpha\x18\x02 \x02(\x02\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\r\n\x05\x62\x65tas\x18\x04 \x03(\x02\x12\x0e\n\x06\x63ounts\x18\x05 \x03(\x04\x1a%\n\x05Group\x12\x0c\n\x04keys\x18\x01 \x03(\r\x12\x0e\n\x06values\x18\x02 \x03(\x04\"u\n\x18PitmanYorProcessDiscrete\x1a\x32\n\x06Shared\x12\r\n\x05\x61lpha\x18\x01 \x02(\x02\x12\t\n\x01\x64\x18\x02 \x03(\x02\x12\x0e\n\x06\x63ounts\x18\x03 \x03(\x04\x1a%\n\x05Group\x12\x0c\n\x04keys\x18\x01 \x03(\r\x12\x0e\n\x06values\x18\x02 \x03(\x04\"p\n\x0cGammaPoisson\x1a)\n\x06Shared\x12\r\n\x05\x61lpha\x18\x01 \x02(\x02\x12\x10\n\x08inv_beta\x18\x02 \x02(\x02\x1a\x35\n\x05Group\x12\r\n\x05\x63ount\x18\x01 \x02(\x04\x12\x0b\n\x03sum\x18\x02 \x02(\x04\x12\x10\n\x08log_prod\x18\x03 \x02(\x02\"m\n\x14\x42\x65taNegativeBinomial\x1a\x30\n\x06Shared\x12\r\n\x05\x61lpha\x18\x01 \x02(\x02\x12\x0c\n\x04\x62\x65ta\x18\x02 \x02(\x02\x12\t\n\x01r\x18\x03 \x02(\x04\x1a#\n\x05Group\x12\r\n\x05\x63ount\x18\x01 \x02(\x04\x12\x0b\n\x03sum\x18\x02 \x02(\x04\"\x9a\x01\n\x12NormalInverseChiSq\x1a@\n\x06Shared\x12\n\n\x02mu\x18\x01 \x02(\x02\x12\r\n\x05kappa\x18\x02 \x02(\x02\x12\x0f\n\x07sigmasq\x18\x03 \x02(\x02\x12\n\n\x02nu\x18\x04 \x02(\x02\x1a\x42\n\x05Group\x12\r\n\x05\x63ount\x18\x01 \x02(\x04\x12\x0c\n\x04mean\x18\x02 \x02(\x02\x12\x1c\n\x14\x63ount_times_variance\x18\x03 \x02(\x02\"\x8c\x01\n\x14NormalInverseWishart\x1a<\n\x06Shared\x12\n\n\x02mu\x18\x01 \x03(\x02\x12\r\n\x05kappa\x18\x02 \x02(\x02\x12\x0b\n\x03psi\x18\x03 \x03(\x02\x12\n\n\x02nu\x18\x04 \x02(\x02\x1a\x36\n\x05Group\x12\r\n\x05\x63ount\x18\x01 \x02(\x05\x12\r\n\x05sum_x\x18\x02 \x03(\x02\x12\x0f\n\x07sum_xxT\x18\x03 \x03(\x02')
-
-
-
-
-_CLUSTERING_PITMANYOR = descriptor.Descriptor(
-  name='PitmanYor',
-  full_name='protobuf.distributions.Clustering.PitmanYor',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='alpha', full_name='protobuf.distributions.Clustering.PitmanYor.alpha', index=0,
-      number=1, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='d', full_name='protobuf.distributions.Clustering.PitmanYor.d', index=1,
-      number=2, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=206,
-  serialized_end=243,
-)
-
-_CLUSTERING_LOWENTROPY = descriptor.Descriptor(
-  name='LowEntropy',
-  full_name='protobuf.distributions.Clustering.LowEntropy',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='dataset_size', full_name='protobuf.distributions.Clustering.LowEntropy.dataset_size', index=0,
-      number=1, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=245,
-  serialized_end=279,
-)
-
-_CLUSTERING = descriptor.Descriptor(
-  name='Clustering',
-  full_name='protobuf.distributions.Clustering',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='pitman_yor', full_name='protobuf.distributions.Clustering.pitman_yor', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='low_entropy', full_name='protobuf.distributions.Clustering.low_entropy', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[_CLUSTERING_PITMANYOR, _CLUSTERING_LOWENTROPY, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=58,
-  serialized_end=279,
-)
-
-
-_BETABERNOULLI_SHARED = descriptor.Descriptor(
-  name='Shared',
-  full_name='protobuf.distributions.BetaBernoulli.Shared',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='alpha', full_name='protobuf.distributions.BetaBernoulli.Shared.alpha', index=0,
-      number=1, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='beta', full_name='protobuf.distributions.BetaBernoulli.Shared.beta', index=1,
-      number=2, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=298,
-  serialized_end=335,
-)
-
-_BETABERNOULLI_GROUP = descriptor.Descriptor(
-  name='Group',
-  full_name='protobuf.distributions.BetaBernoulli.Group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='heads', full_name='protobuf.distributions.BetaBernoulli.Group.heads', index=0,
-      number=1, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='tails', full_name='protobuf.distributions.BetaBernoulli.Group.tails', index=1,
-      number=2, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=337,
-  serialized_end=374,
-)
-
-_BETABERNOULLI = descriptor.Descriptor(
-  name='BetaBernoulli',
-  full_name='protobuf.distributions.BetaBernoulli',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[_BETABERNOULLI_SHARED, _BETABERNOULLI_GROUP, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=281,
-  serialized_end=374,
-)
-
-
-_DIRICHLETDISCRETE_SHARED = descriptor.Descriptor(
-  name='Shared',
-  full_name='protobuf.distributions.DirichletDiscrete.Shared',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='alphas', full_name='protobuf.distributions.DirichletDiscrete.Shared.alphas', index=0,
-      number=1, type=2, cpp_type=6, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=397,
-  serialized_end=421,
-)
-
-_DIRICHLETDISCRETE_GROUP = descriptor.Descriptor(
-  name='Group',
-  full_name='protobuf.distributions.DirichletDiscrete.Group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='counts', full_name='protobuf.distributions.DirichletDiscrete.Group.counts', index=0,
-      number=1, type=4, cpp_type=4, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=423,
-  serialized_end=446,
-)
-
-_DIRICHLETDISCRETE = descriptor.Descriptor(
-  name='DirichletDiscrete',
-  full_name='protobuf.distributions.DirichletDiscrete',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[_DIRICHLETDISCRETE_SHARED, _DIRICHLETDISCRETE_GROUP, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=376,
-  serialized_end=446,
-)
-
-
-_DIRICHLETPROCESSDISCRETE_SHARED = descriptor.Descriptor(
-  name='Shared',
-  full_name='protobuf.distributions.DirichletProcessDiscrete.Shared',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='gamma', full_name='protobuf.distributions.DirichletProcessDiscrete.Shared.gamma', index=0,
-      number=1, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='alpha', full_name='protobuf.distributions.DirichletProcessDiscrete.Shared.alpha', index=1,
-      number=2, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='values', full_name='protobuf.distributions.DirichletProcessDiscrete.Shared.values', index=2,
-      number=3, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='betas', full_name='protobuf.distributions.DirichletProcessDiscrete.Shared.betas', index=3,
-      number=4, type=2, cpp_type=6, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='counts', full_name='protobuf.distributions.DirichletProcessDiscrete.Shared.counts', index=4,
-      number=5, type=4, cpp_type=4, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=477,
-  serialized_end=562,
-)
-
-_DIRICHLETPROCESSDISCRETE_GROUP = descriptor.Descriptor(
-  name='Group',
-  full_name='protobuf.distributions.DirichletProcessDiscrete.Group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='keys', full_name='protobuf.distributions.DirichletProcessDiscrete.Group.keys', index=0,
-      number=1, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='values', full_name='protobuf.distributions.DirichletProcessDiscrete.Group.values', index=1,
-      number=2, type=4, cpp_type=4, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=564,
-  serialized_end=601,
-)
-
-_DIRICHLETPROCESSDISCRETE = descriptor.Descriptor(
-  name='DirichletProcessDiscrete',
-  full_name='protobuf.distributions.DirichletProcessDiscrete',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[_DIRICHLETPROCESSDISCRETE_SHARED, _DIRICHLETPROCESSDISCRETE_GROUP, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=449,
-  serialized_end=601,
-)
-
-
-_PITMANYORPROCESSDISCRETE_SHARED = descriptor.Descriptor(
-  name='Shared',
-  full_name='protobuf.distributions.PitmanYorProcessDiscrete.Shared',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='alpha', full_name='protobuf.distributions.PitmanYorProcessDiscrete.Shared.alpha', index=0,
-      number=1, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='d', full_name='protobuf.distributions.PitmanYorProcessDiscrete.Shared.d', index=1,
-      number=2, type=2, cpp_type=6, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='counts', full_name='protobuf.distributions.PitmanYorProcessDiscrete.Shared.counts', index=2,
-      number=3, type=4, cpp_type=4, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=631,
-  serialized_end=681,
-)
-
-_PITMANYORPROCESSDISCRETE_GROUP = descriptor.Descriptor(
-  name='Group',
-  full_name='protobuf.distributions.PitmanYorProcessDiscrete.Group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='keys', full_name='protobuf.distributions.PitmanYorProcessDiscrete.Group.keys', index=0,
-      number=1, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='values', full_name='protobuf.distributions.PitmanYorProcessDiscrete.Group.values', index=1,
-      number=2, type=4, cpp_type=4, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=564,
-  serialized_end=601,
-)
-
-_PITMANYORPROCESSDISCRETE = descriptor.Descriptor(
-  name='PitmanYorProcessDiscrete',
-  full_name='protobuf.distributions.PitmanYorProcessDiscrete',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[_PITMANYORPROCESSDISCRETE_SHARED, _PITMANYORPROCESSDISCRETE_GROUP, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=603,
-  serialized_end=720,
-)
-
-
-_GAMMAPOISSON_SHARED = descriptor.Descriptor(
-  name='Shared',
-  full_name='protobuf.distributions.GammaPoisson.Shared',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='alpha', full_name='protobuf.distributions.GammaPoisson.Shared.alpha', index=0,
-      number=1, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='inv_beta', full_name='protobuf.distributions.GammaPoisson.Shared.inv_beta', index=1,
-      number=2, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=738,
-  serialized_end=779,
-)
-
-_GAMMAPOISSON_GROUP = descriptor.Descriptor(
-  name='Group',
-  full_name='protobuf.distributions.GammaPoisson.Group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='count', full_name='protobuf.distributions.GammaPoisson.Group.count', index=0,
-      number=1, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='sum', full_name='protobuf.distributions.GammaPoisson.Group.sum', index=1,
-      number=2, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='log_prod', full_name='protobuf.distributions.GammaPoisson.Group.log_prod', index=2,
-      number=3, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=781,
-  serialized_end=834,
-)
-
-_GAMMAPOISSON = descriptor.Descriptor(
-  name='GammaPoisson',
-  full_name='protobuf.distributions.GammaPoisson',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[_GAMMAPOISSON_SHARED, _GAMMAPOISSON_GROUP, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=722,
-  serialized_end=834,
-)
-
-
-_BETANEGATIVEBINOMIAL_SHARED = descriptor.Descriptor(
-  name='Shared',
-  full_name='protobuf.distributions.BetaNegativeBinomial.Shared',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='alpha', full_name='protobuf.distributions.BetaNegativeBinomial.Shared.alpha', index=0,
-      number=1, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='beta', full_name='protobuf.distributions.BetaNegativeBinomial.Shared.beta', index=1,
-      number=2, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='r', full_name='protobuf.distributions.BetaNegativeBinomial.Shared.r', index=2,
-      number=3, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=860,
-  serialized_end=908,
-)
-
-_BETANEGATIVEBINOMIAL_GROUP = descriptor.Descriptor(
-  name='Group',
-  full_name='protobuf.distributions.BetaNegativeBinomial.Group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='count', full_name='protobuf.distributions.BetaNegativeBinomial.Group.count', index=0,
-      number=1, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='sum', full_name='protobuf.distributions.BetaNegativeBinomial.Group.sum', index=1,
-      number=2, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=781,
-  serialized_end=816,
-)
-
-_BETANEGATIVEBINOMIAL = descriptor.Descriptor(
-  name='BetaNegativeBinomial',
-  full_name='protobuf.distributions.BetaNegativeBinomial',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[_BETANEGATIVEBINOMIAL_SHARED, _BETANEGATIVEBINOMIAL_GROUP, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=836,
-  serialized_end=945,
-)
-
-
-_NORMALINVERSECHISQ_SHARED = descriptor.Descriptor(
-  name='Shared',
-  full_name='protobuf.distributions.NormalInverseChiSq.Shared',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='mu', full_name='protobuf.distributions.NormalInverseChiSq.Shared.mu', index=0,
-      number=1, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='kappa', full_name='protobuf.distributions.NormalInverseChiSq.Shared.kappa', index=1,
-      number=2, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='sigmasq', full_name='protobuf.distributions.NormalInverseChiSq.Shared.sigmasq', index=2,
-      number=3, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='nu', full_name='protobuf.distributions.NormalInverseChiSq.Shared.nu', index=3,
-      number=4, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=970,
-  serialized_end=1034,
-)
-
-_NORMALINVERSECHISQ_GROUP = descriptor.Descriptor(
-  name='Group',
-  full_name='protobuf.distributions.NormalInverseChiSq.Group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='count', full_name='protobuf.distributions.NormalInverseChiSq.Group.count', index=0,
-      number=1, type=4, cpp_type=4, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='mean', full_name='protobuf.distributions.NormalInverseChiSq.Group.mean', index=1,
-      number=2, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='count_times_variance', full_name='protobuf.distributions.NormalInverseChiSq.Group.count_times_variance', index=2,
-      number=3, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=1036,
-  serialized_end=1102,
-)
-
-_NORMALINVERSECHISQ = descriptor.Descriptor(
-  name='NormalInverseChiSq',
-  full_name='protobuf.distributions.NormalInverseChiSq',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[_NORMALINVERSECHISQ_SHARED, _NORMALINVERSECHISQ_GROUP, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=948,
-  serialized_end=1102,
-)
-
-
-_NORMALINVERSEWISHART_SHARED = descriptor.Descriptor(
-  name='Shared',
-  full_name='protobuf.distributions.NormalInverseWishart.Shared',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='mu', full_name='protobuf.distributions.NormalInverseWishart.Shared.mu', index=0,
-      number=1, type=2, cpp_type=6, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='kappa', full_name='protobuf.distributions.NormalInverseWishart.Shared.kappa', index=1,
-      number=2, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='psi', full_name='protobuf.distributions.NormalInverseWishart.Shared.psi', index=2,
-      number=3, type=2, cpp_type=6, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='nu', full_name='protobuf.distributions.NormalInverseWishart.Shared.nu', index=3,
-      number=4, type=2, cpp_type=6, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=1129,
-  serialized_end=1189,
-)
-
-_NORMALINVERSEWISHART_GROUP = descriptor.Descriptor(
-  name='Group',
-  full_name='protobuf.distributions.NormalInverseWishart.Group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    descriptor.FieldDescriptor(
-      name='count', full_name='protobuf.distributions.NormalInverseWishart.Group.count', index=0,
-      number=1, type=5, cpp_type=1, label=2,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='sum_x', full_name='protobuf.distributions.NormalInverseWishart.Group.sum_x', index=1,
-      number=2, type=2, cpp_type=6, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    descriptor.FieldDescriptor(
-      name='sum_xxT', full_name='protobuf.distributions.NormalInverseWishart.Group.sum_xxT', index=2,
-      number=3, type=2, cpp_type=6, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=1191,
-  serialized_end=1245,
-)
-
-_NORMALINVERSEWISHART = descriptor.Descriptor(
-  name='NormalInverseWishart',
-  full_name='protobuf.distributions.NormalInverseWishart',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[_NORMALINVERSEWISHART_SHARED, _NORMALINVERSEWISHART_GROUP, ],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  extension_ranges=[],
-  serialized_start=1105,
-  serialized_end=1245,
-)
-
-_CLUSTERING_PITMANYOR.containing_type = _CLUSTERING;
-_CLUSTERING_LOWENTROPY.containing_type = _CLUSTERING;
-_CLUSTERING.fields_by_name['pitman_yor'].message_type = _CLUSTERING_PITMANYOR
-_CLUSTERING.fields_by_name['low_entropy'].message_type = _CLUSTERING_LOWENTROPY
-_BETABERNOULLI_SHARED.containing_type = _BETABERNOULLI;
-_BETABERNOULLI_GROUP.containing_type = _BETABERNOULLI;
-_DIRICHLETDISCRETE_SHARED.containing_type = _DIRICHLETDISCRETE;
-_DIRICHLETDISCRETE_GROUP.containing_type = _DIRICHLETDISCRETE;
-_DIRICHLETPROCESSDISCRETE_SHARED.containing_type = _DIRICHLETPROCESSDISCRETE;
-_DIRICHLETPROCESSDISCRETE_GROUP.containing_type = _DIRICHLETPROCESSDISCRETE;
-_PITMANYORPROCESSDISCRETE_SHARED.containing_type = _PITMANYORPROCESSDISCRETE;
-_PITMANYORPROCESSDISCRETE_GROUP.containing_type = _PITMANYORPROCESSDISCRETE;
-_GAMMAPOISSON_SHARED.containing_type = _GAMMAPOISSON;
-_GAMMAPOISSON_GROUP.containing_type = _GAMMAPOISSON;
-_BETANEGATIVEBINOMIAL_SHARED.containing_type = _BETANEGATIVEBINOMIAL;
-_BETANEGATIVEBINOMIAL_GROUP.containing_type = _BETANEGATIVEBINOMIAL;
-_NORMALINVERSECHISQ_SHARED.containing_type = _NORMALINVERSECHISQ;
-_NORMALINVERSECHISQ_GROUP.containing_type = _NORMALINVERSECHISQ;
-_NORMALINVERSEWISHART_SHARED.containing_type = _NORMALINVERSEWISHART;
-_NORMALINVERSEWISHART_GROUP.containing_type = _NORMALINVERSEWISHART;
-DESCRIPTOR.message_types_by_name['Clustering'] = _CLUSTERING
-DESCRIPTOR.message_types_by_name['BetaBernoulli'] = _BETABERNOULLI
-DESCRIPTOR.message_types_by_name['DirichletDiscrete'] = _DIRICHLETDISCRETE
-DESCRIPTOR.message_types_by_name['DirichletProcessDiscrete'] = _DIRICHLETPROCESSDISCRETE
-DESCRIPTOR.message_types_by_name['PitmanYorProcessDiscrete'] = _PITMANYORPROCESSDISCRETE
-DESCRIPTOR.message_types_by_name['GammaPoisson'] = _GAMMAPOISSON
-DESCRIPTOR.message_types_by_name['BetaNegativeBinomial'] = _BETANEGATIVEBINOMIAL
-DESCRIPTOR.message_types_by_name['NormalInverseChiSq'] = _NORMALINVERSECHISQ
-DESCRIPTOR.message_types_by_name['NormalInverseWishart'] = _NORMALINVERSEWISHART
-
-class Clustering(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class PitmanYor(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _CLUSTERING_PITMANYOR
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.Clustering.PitmanYor)
-  
-  class LowEntropy(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _CLUSTERING_LOWENTROPY
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.Clustering.LowEntropy)
-  DESCRIPTOR = _CLUSTERING
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.Clustering)
-
-class BetaBernoulli(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class Shared(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _BETABERNOULLI_SHARED
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.BetaBernoulli.Shared)
-  
-  class Group(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _BETABERNOULLI_GROUP
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.BetaBernoulli.Group)
-  DESCRIPTOR = _BETABERNOULLI
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.BetaBernoulli)
-
-class DirichletDiscrete(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class Shared(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _DIRICHLETDISCRETE_SHARED
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletDiscrete.Shared)
-  
-  class Group(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _DIRICHLETDISCRETE_GROUP
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletDiscrete.Group)
-  DESCRIPTOR = _DIRICHLETDISCRETE
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletDiscrete)
-
-class DirichletProcessDiscrete(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class Shared(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _DIRICHLETPROCESSDISCRETE_SHARED
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletProcessDiscrete.Shared)
-  
-  class Group(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _DIRICHLETPROCESSDISCRETE_GROUP
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletProcessDiscrete.Group)
-  DESCRIPTOR = _DIRICHLETPROCESSDISCRETE
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletProcessDiscrete)
-
-class PitmanYorProcessDiscrete(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class Shared(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _PITMANYORPROCESSDISCRETE_SHARED
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.PitmanYorProcessDiscrete.Shared)
-  
-  class Group(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _PITMANYORPROCESSDISCRETE_GROUP
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.PitmanYorProcessDiscrete.Group)
-  DESCRIPTOR = _PITMANYORPROCESSDISCRETE
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.PitmanYorProcessDiscrete)
-
-class GammaPoisson(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class Shared(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _GAMMAPOISSON_SHARED
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.GammaPoisson.Shared)
-  
-  class Group(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _GAMMAPOISSON_GROUP
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.GammaPoisson.Group)
-  DESCRIPTOR = _GAMMAPOISSON
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.GammaPoisson)
-
-class BetaNegativeBinomial(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class Shared(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _BETANEGATIVEBINOMIAL_SHARED
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.BetaNegativeBinomial.Shared)
-  
-  class Group(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _BETANEGATIVEBINOMIAL_GROUP
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.BetaNegativeBinomial.Group)
-  DESCRIPTOR = _BETANEGATIVEBINOMIAL
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.BetaNegativeBinomial)
-
-class NormalInverseChiSq(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class Shared(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _NORMALINVERSECHISQ_SHARED
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseChiSq.Shared)
-  
-  class Group(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _NORMALINVERSECHISQ_GROUP
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseChiSq.Group)
-  DESCRIPTOR = _NORMALINVERSECHISQ
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseChiSq)
-
-class NormalInverseWishart(message.Message):
-  __metaclass__ = reflection.GeneratedProtocolMessageType
-  
-  class Shared(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _NORMALINVERSEWISHART_SHARED
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseWishart.Shared)
-  
-  class Group(message.Message):
-    __metaclass__ = reflection.GeneratedProtocolMessageType
-    DESCRIPTOR = _NORMALINVERSEWISHART_GROUP
-    
-    # @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseWishart.Group)
-  DESCRIPTOR = _NORMALINVERSEWISHART
-  
-  # @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseWishart)
-
-# @@protoc_insertion_point(module_scope)
diff --git a/include/distributions/io/schema.pb.cc b/include/distributions/io/schema.pb.cc
deleted file mode 100644
index 15dbced..0000000
--- a/include/distributions/io/schema.pb.cc
+++ /dev/null
@@ -1,7138 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
-#include "distributions/io/schema.pb.h"
-
-#include <algorithm>
-
-#include <google/protobuf/stubs/once.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/wire_format_lite_inl.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/reflection_ops.h>
-#include <google/protobuf/wire_format.h>
-// @@protoc_insertion_point(includes)
-
-namespace protobuf {
-namespace distributions {
-
-namespace {
-
-const ::google::protobuf::Descriptor* Clustering_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  Clustering_reflection_ = NULL;
-const ::google::protobuf::Descriptor* Clustering_PitmanYor_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  Clustering_PitmanYor_reflection_ = NULL;
-const ::google::protobuf::Descriptor* Clustering_LowEntropy_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  Clustering_LowEntropy_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaBernoulli_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaBernoulli_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaBernoulli_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaBernoulli_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaBernoulli_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaBernoulli_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletDiscrete_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletDiscrete_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletDiscrete_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletDiscrete_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletDiscrete_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletDiscrete_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletProcessDiscrete_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletProcessDiscrete_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletProcessDiscrete_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  PitmanYorProcessDiscrete_reflection_ = NULL;
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  PitmanYorProcessDiscrete_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  PitmanYorProcessDiscrete_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* GammaPoisson_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  GammaPoisson_reflection_ = NULL;
-const ::google::protobuf::Descriptor* GammaPoisson_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  GammaPoisson_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* GammaPoisson_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  GammaPoisson_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaNegativeBinomial_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaNegativeBinomial_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaNegativeBinomial_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseChiSq_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseChiSq_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseChiSq_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseChiSq_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseChiSq_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseChiSq_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseWishart_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseWishart_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseWishart_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseWishart_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseWishart_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseWishart_Group_reflection_ = NULL;
-
-}  // namespace
-
-
-void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto() {
-  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  const ::google::protobuf::FileDescriptor* file =
-    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
-      "distributions/io/schema.proto");
-  GOOGLE_CHECK(file != NULL);
-  Clustering_descriptor_ = file->message_type(0);
-  static const int Clustering_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering, pitman_yor_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering, low_entropy_),
-  };
-  Clustering_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      Clustering_descriptor_,
-      Clustering::default_instance_,
-      Clustering_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(Clustering));
-  Clustering_PitmanYor_descriptor_ = Clustering_descriptor_->nested_type(0);
-  static const int Clustering_PitmanYor_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_PitmanYor, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_PitmanYor, d_),
-  };
-  Clustering_PitmanYor_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      Clustering_PitmanYor_descriptor_,
-      Clustering_PitmanYor::default_instance_,
-      Clustering_PitmanYor_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_PitmanYor, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_PitmanYor, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(Clustering_PitmanYor));
-  Clustering_LowEntropy_descriptor_ = Clustering_descriptor_->nested_type(1);
-  static const int Clustering_LowEntropy_offsets_[1] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_LowEntropy, dataset_size_),
-  };
-  Clustering_LowEntropy_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      Clustering_LowEntropy_descriptor_,
-      Clustering_LowEntropy::default_instance_,
-      Clustering_LowEntropy_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_LowEntropy, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_LowEntropy, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(Clustering_LowEntropy));
-  BetaBernoulli_descriptor_ = file->message_type(1);
-  static const int BetaBernoulli_offsets_[1] = {
-  };
-  BetaBernoulli_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaBernoulli_descriptor_,
-      BetaBernoulli::default_instance_,
-      BetaBernoulli_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaBernoulli));
-  BetaBernoulli_Shared_descriptor_ = BetaBernoulli_descriptor_->nested_type(0);
-  static const int BetaBernoulli_Shared_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Shared, beta_),
-  };
-  BetaBernoulli_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaBernoulli_Shared_descriptor_,
-      BetaBernoulli_Shared::default_instance_,
-      BetaBernoulli_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaBernoulli_Shared));
-  BetaBernoulli_Group_descriptor_ = BetaBernoulli_descriptor_->nested_type(1);
-  static const int BetaBernoulli_Group_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Group, heads_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Group, tails_),
-  };
-  BetaBernoulli_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaBernoulli_Group_descriptor_,
-      BetaBernoulli_Group::default_instance_,
-      BetaBernoulli_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaBernoulli_Group));
-  DirichletDiscrete_descriptor_ = file->message_type(2);
-  static const int DirichletDiscrete_offsets_[1] = {
-  };
-  DirichletDiscrete_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletDiscrete_descriptor_,
-      DirichletDiscrete::default_instance_,
-      DirichletDiscrete_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletDiscrete));
-  DirichletDiscrete_Shared_descriptor_ = DirichletDiscrete_descriptor_->nested_type(0);
-  static const int DirichletDiscrete_Shared_offsets_[1] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Shared, alphas_),
-  };
-  DirichletDiscrete_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletDiscrete_Shared_descriptor_,
-      DirichletDiscrete_Shared::default_instance_,
-      DirichletDiscrete_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletDiscrete_Shared));
-  DirichletDiscrete_Group_descriptor_ = DirichletDiscrete_descriptor_->nested_type(1);
-  static const int DirichletDiscrete_Group_offsets_[1] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Group, counts_),
-  };
-  DirichletDiscrete_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletDiscrete_Group_descriptor_,
-      DirichletDiscrete_Group::default_instance_,
-      DirichletDiscrete_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletDiscrete_Group));
-  DirichletProcessDiscrete_descriptor_ = file->message_type(3);
-  static const int DirichletProcessDiscrete_offsets_[1] = {
-  };
-  DirichletProcessDiscrete_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletProcessDiscrete_descriptor_,
-      DirichletProcessDiscrete::default_instance_,
-      DirichletProcessDiscrete_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletProcessDiscrete));
-  DirichletProcessDiscrete_Shared_descriptor_ = DirichletProcessDiscrete_descriptor_->nested_type(0);
-  static const int DirichletProcessDiscrete_Shared_offsets_[5] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, gamma_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, values_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, betas_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, counts_),
-  };
-  DirichletProcessDiscrete_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletProcessDiscrete_Shared_descriptor_,
-      DirichletProcessDiscrete_Shared::default_instance_,
-      DirichletProcessDiscrete_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletProcessDiscrete_Shared));
-  DirichletProcessDiscrete_Group_descriptor_ = DirichletProcessDiscrete_descriptor_->nested_type(1);
-  static const int DirichletProcessDiscrete_Group_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Group, keys_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Group, values_),
-  };
-  DirichletProcessDiscrete_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletProcessDiscrete_Group_descriptor_,
-      DirichletProcessDiscrete_Group::default_instance_,
-      DirichletProcessDiscrete_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletProcessDiscrete_Group));
-  PitmanYorProcessDiscrete_descriptor_ = file->message_type(4);
-  static const int PitmanYorProcessDiscrete_offsets_[1] = {
-  };
-  PitmanYorProcessDiscrete_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      PitmanYorProcessDiscrete_descriptor_,
-      PitmanYorProcessDiscrete::default_instance_,
-      PitmanYorProcessDiscrete_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(PitmanYorProcessDiscrete));
-  PitmanYorProcessDiscrete_Shared_descriptor_ = PitmanYorProcessDiscrete_descriptor_->nested_type(0);
-  static const int PitmanYorProcessDiscrete_Shared_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, d_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, counts_),
-  };
-  PitmanYorProcessDiscrete_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      PitmanYorProcessDiscrete_Shared_descriptor_,
-      PitmanYorProcessDiscrete_Shared::default_instance_,
-      PitmanYorProcessDiscrete_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(PitmanYorProcessDiscrete_Shared));
-  PitmanYorProcessDiscrete_Group_descriptor_ = PitmanYorProcessDiscrete_descriptor_->nested_type(1);
-  static const int PitmanYorProcessDiscrete_Group_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Group, keys_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Group, values_),
-  };
-  PitmanYorProcessDiscrete_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      PitmanYorProcessDiscrete_Group_descriptor_,
-      PitmanYorProcessDiscrete_Group::default_instance_,
-      PitmanYorProcessDiscrete_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(PitmanYorProcessDiscrete_Group));
-  GammaPoisson_descriptor_ = file->message_type(5);
-  static const int GammaPoisson_offsets_[1] = {
-  };
-  GammaPoisson_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      GammaPoisson_descriptor_,
-      GammaPoisson::default_instance_,
-      GammaPoisson_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(GammaPoisson));
-  GammaPoisson_Shared_descriptor_ = GammaPoisson_descriptor_->nested_type(0);
-  static const int GammaPoisson_Shared_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Shared, inv_beta_),
-  };
-  GammaPoisson_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      GammaPoisson_Shared_descriptor_,
-      GammaPoisson_Shared::default_instance_,
-      GammaPoisson_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(GammaPoisson_Shared));
-  GammaPoisson_Group_descriptor_ = GammaPoisson_descriptor_->nested_type(1);
-  static const int GammaPoisson_Group_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, count_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, sum_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, log_prod_),
-  };
-  GammaPoisson_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      GammaPoisson_Group_descriptor_,
-      GammaPoisson_Group::default_instance_,
-      GammaPoisson_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(GammaPoisson_Group));
-  BetaNegativeBinomial_descriptor_ = file->message_type(6);
-  static const int BetaNegativeBinomial_offsets_[1] = {
-  };
-  BetaNegativeBinomial_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaNegativeBinomial_descriptor_,
-      BetaNegativeBinomial::default_instance_,
-      BetaNegativeBinomial_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaNegativeBinomial));
-  BetaNegativeBinomial_Shared_descriptor_ = BetaNegativeBinomial_descriptor_->nested_type(0);
-  static const int BetaNegativeBinomial_Shared_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, beta_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, r_),
-  };
-  BetaNegativeBinomial_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaNegativeBinomial_Shared_descriptor_,
-      BetaNegativeBinomial_Shared::default_instance_,
-      BetaNegativeBinomial_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaNegativeBinomial_Shared));
-  BetaNegativeBinomial_Group_descriptor_ = BetaNegativeBinomial_descriptor_->nested_type(1);
-  static const int BetaNegativeBinomial_Group_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Group, count_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Group, sum_),
-  };
-  BetaNegativeBinomial_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaNegativeBinomial_Group_descriptor_,
-      BetaNegativeBinomial_Group::default_instance_,
-      BetaNegativeBinomial_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaNegativeBinomial_Group));
-  NormalInverseChiSq_descriptor_ = file->message_type(7);
-  static const int NormalInverseChiSq_offsets_[1] = {
-  };
-  NormalInverseChiSq_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseChiSq_descriptor_,
-      NormalInverseChiSq::default_instance_,
-      NormalInverseChiSq_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseChiSq));
-  NormalInverseChiSq_Shared_descriptor_ = NormalInverseChiSq_descriptor_->nested_type(0);
-  static const int NormalInverseChiSq_Shared_offsets_[4] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, mu_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, kappa_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, sigmasq_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, nu_),
-  };
-  NormalInverseChiSq_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseChiSq_Shared_descriptor_,
-      NormalInverseChiSq_Shared::default_instance_,
-      NormalInverseChiSq_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseChiSq_Shared));
-  NormalInverseChiSq_Group_descriptor_ = NormalInverseChiSq_descriptor_->nested_type(1);
-  static const int NormalInverseChiSq_Group_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, count_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, mean_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, count_times_variance_),
-  };
-  NormalInverseChiSq_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseChiSq_Group_descriptor_,
-      NormalInverseChiSq_Group::default_instance_,
-      NormalInverseChiSq_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseChiSq_Group));
-  NormalInverseWishart_descriptor_ = file->message_type(8);
-  static const int NormalInverseWishart_offsets_[1] = {
-  };
-  NormalInverseWishart_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseWishart_descriptor_,
-      NormalInverseWishart::default_instance_,
-      NormalInverseWishart_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseWishart));
-  NormalInverseWishart_Shared_descriptor_ = NormalInverseWishart_descriptor_->nested_type(0);
-  static const int NormalInverseWishart_Shared_offsets_[4] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, mu_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, kappa_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, psi_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, nu_),
-  };
-  NormalInverseWishart_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseWishart_Shared_descriptor_,
-      NormalInverseWishart_Shared::default_instance_,
-      NormalInverseWishart_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseWishart_Shared));
-  NormalInverseWishart_Group_descriptor_ = NormalInverseWishart_descriptor_->nested_type(1);
-  static const int NormalInverseWishart_Group_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, count_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, sum_x_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, sum_xxt_),
-  };
-  NormalInverseWishart_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseWishart_Group_descriptor_,
-      NormalInverseWishart_Group::default_instance_,
-      NormalInverseWishart_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseWishart_Group));
-}
-
-namespace {
-
-GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
-inline void protobuf_AssignDescriptorsOnce() {
-  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
-                 &protobuf_AssignDesc_distributions_2fio_2fschema_2eproto);
-}
-
-void protobuf_RegisterTypes(const ::std::string&) {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    Clustering_descriptor_, &Clustering::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    Clustering_PitmanYor_descriptor_, &Clustering_PitmanYor::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    Clustering_LowEntropy_descriptor_, &Clustering_LowEntropy::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaBernoulli_descriptor_, &BetaBernoulli::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaBernoulli_Shared_descriptor_, &BetaBernoulli_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaBernoulli_Group_descriptor_, &BetaBernoulli_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletDiscrete_descriptor_, &DirichletDiscrete::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletDiscrete_Shared_descriptor_, &DirichletDiscrete_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletDiscrete_Group_descriptor_, &DirichletDiscrete_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletProcessDiscrete_descriptor_, &DirichletProcessDiscrete::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletProcessDiscrete_Shared_descriptor_, &DirichletProcessDiscrete_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletProcessDiscrete_Group_descriptor_, &DirichletProcessDiscrete_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    PitmanYorProcessDiscrete_descriptor_, &PitmanYorProcessDiscrete::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    PitmanYorProcessDiscrete_Shared_descriptor_, &PitmanYorProcessDiscrete_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    PitmanYorProcessDiscrete_Group_descriptor_, &PitmanYorProcessDiscrete_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    GammaPoisson_descriptor_, &GammaPoisson::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    GammaPoisson_Shared_descriptor_, &GammaPoisson_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    GammaPoisson_Group_descriptor_, &GammaPoisson_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaNegativeBinomial_descriptor_, &BetaNegativeBinomial::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaNegativeBinomial_Shared_descriptor_, &BetaNegativeBinomial_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaNegativeBinomial_Group_descriptor_, &BetaNegativeBinomial_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseChiSq_descriptor_, &NormalInverseChiSq::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseChiSq_Shared_descriptor_, &NormalInverseChiSq_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseChiSq_Group_descriptor_, &NormalInverseChiSq_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseWishart_descriptor_, &NormalInverseWishart::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseWishart_Shared_descriptor_, &NormalInverseWishart_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseWishart_Group_descriptor_, &NormalInverseWishart_Group::default_instance());
-}
-
-}  // namespace
-
-void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto() {
-  delete Clustering::default_instance_;
-  delete Clustering_reflection_;
-  delete Clustering_PitmanYor::default_instance_;
-  delete Clustering_PitmanYor_reflection_;
-  delete Clustering_LowEntropy::default_instance_;
-  delete Clustering_LowEntropy_reflection_;
-  delete BetaBernoulli::default_instance_;
-  delete BetaBernoulli_reflection_;
-  delete BetaBernoulli_Shared::default_instance_;
-  delete BetaBernoulli_Shared_reflection_;
-  delete BetaBernoulli_Group::default_instance_;
-  delete BetaBernoulli_Group_reflection_;
-  delete DirichletDiscrete::default_instance_;
-  delete DirichletDiscrete_reflection_;
-  delete DirichletDiscrete_Shared::default_instance_;
-  delete DirichletDiscrete_Shared_reflection_;
-  delete DirichletDiscrete_Group::default_instance_;
-  delete DirichletDiscrete_Group_reflection_;
-  delete DirichletProcessDiscrete::default_instance_;
-  delete DirichletProcessDiscrete_reflection_;
-  delete DirichletProcessDiscrete_Shared::default_instance_;
-  delete DirichletProcessDiscrete_Shared_reflection_;
-  delete DirichletProcessDiscrete_Group::default_instance_;
-  delete DirichletProcessDiscrete_Group_reflection_;
-  delete PitmanYorProcessDiscrete::default_instance_;
-  delete PitmanYorProcessDiscrete_reflection_;
-  delete PitmanYorProcessDiscrete_Shared::default_instance_;
-  delete PitmanYorProcessDiscrete_Shared_reflection_;
-  delete PitmanYorProcessDiscrete_Group::default_instance_;
-  delete PitmanYorProcessDiscrete_Group_reflection_;
-  delete GammaPoisson::default_instance_;
-  delete GammaPoisson_reflection_;
-  delete GammaPoisson_Shared::default_instance_;
-  delete GammaPoisson_Shared_reflection_;
-  delete GammaPoisson_Group::default_instance_;
-  delete GammaPoisson_Group_reflection_;
-  delete BetaNegativeBinomial::default_instance_;
-  delete BetaNegativeBinomial_reflection_;
-  delete BetaNegativeBinomial_Shared::default_instance_;
-  delete BetaNegativeBinomial_Shared_reflection_;
-  delete BetaNegativeBinomial_Group::default_instance_;
-  delete BetaNegativeBinomial_Group_reflection_;
-  delete NormalInverseChiSq::default_instance_;
-  delete NormalInverseChiSq_reflection_;
-  delete NormalInverseChiSq_Shared::default_instance_;
-  delete NormalInverseChiSq_Shared_reflection_;
-  delete NormalInverseChiSq_Group::default_instance_;
-  delete NormalInverseChiSq_Group_reflection_;
-  delete NormalInverseWishart::default_instance_;
-  delete NormalInverseWishart_reflection_;
-  delete NormalInverseWishart_Shared::default_instance_;
-  delete NormalInverseWishart_Shared_reflection_;
-  delete NormalInverseWishart_Group::default_instance_;
-  delete NormalInverseWishart_Group_reflection_;
-}
-
-void protobuf_AddDesc_distributions_2fio_2fschema_2eproto() {
-  static bool already_here = false;
-  if (already_here) return;
-  already_here = true;
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-    "\n\035distributions/io/schema.proto\022\026protobu"
-    "f.distributions\"\335\001\n\nClustering\022@\n\npitman"
-    "_yor\030\001 \001(\0132,.protobuf.distributions.Clus"
-    "tering.PitmanYor\022B\n\013low_entropy\030\002 \001(\0132-."
-    "protobuf.distributions.Clustering.LowEnt"
-    "ropy\032%\n\tPitmanYor\022\r\n\005alpha\030\001 \002(\002\022\t\n\001d\030\002 "
-    "\002(\002\032\"\n\nLowEntropy\022\024\n\014dataset_size\030\001 \002(\004\""
-    "]\n\rBetaBernoulli\032%\n\006Shared\022\r\n\005alpha\030\001 \002("
-    "\002\022\014\n\004beta\030\002 \002(\002\032%\n\005Group\022\r\n\005heads\030\001 \002(\004\022"
-    "\r\n\005tails\030\002 \002(\004\"F\n\021DirichletDiscrete\032\030\n\006S"
-    "hared\022\016\n\006alphas\030\001 \003(\002\032\027\n\005Group\022\016\n\006counts"
-    "\030\001 \003(\004\"\230\001\n\030DirichletProcessDiscrete\032U\n\006S"
-    "hared\022\r\n\005gamma\030\001 \002(\002\022\r\n\005alpha\030\002 \002(\002\022\016\n\006v"
-    "alues\030\003 \003(\r\022\r\n\005betas\030\004 \003(\002\022\016\n\006counts\030\005 \003"
-    "(\004\032%\n\005Group\022\014\n\004keys\030\001 \003(\r\022\016\n\006values\030\002 \003("
-    "\004\"u\n\030PitmanYorProcessDiscrete\0322\n\006Shared\022"
-    "\r\n\005alpha\030\001 \002(\002\022\t\n\001d\030\002 \003(\002\022\016\n\006counts\030\003 \003("
-    "\004\032%\n\005Group\022\014\n\004keys\030\001 \003(\r\022\016\n\006values\030\002 \003(\004"
-    "\"p\n\014GammaPoisson\032)\n\006Shared\022\r\n\005alpha\030\001 \002("
-    "\002\022\020\n\010inv_beta\030\002 \002(\002\0325\n\005Group\022\r\n\005count\030\001 "
-    "\002(\004\022\013\n\003sum\030\002 \002(\004\022\020\n\010log_prod\030\003 \002(\002\"m\n\024Be"
-    "taNegativeBinomial\0320\n\006Shared\022\r\n\005alpha\030\001 "
-    "\002(\002\022\014\n\004beta\030\002 \002(\002\022\t\n\001r\030\003 \002(\004\032#\n\005Group\022\r\n"
-    "\005count\030\001 \002(\004\022\013\n\003sum\030\002 \002(\004\"\232\001\n\022NormalInve"
-    "rseChiSq\032@\n\006Shared\022\n\n\002mu\030\001 \002(\002\022\r\n\005kappa\030"
-    "\002 \002(\002\022\017\n\007sigmasq\030\003 \002(\002\022\n\n\002nu\030\004 \002(\002\032B\n\005Gr"
-    "oup\022\r\n\005count\030\001 \002(\004\022\014\n\004mean\030\002 \002(\002\022\034\n\024coun"
-    "t_times_variance\030\003 \002(\002\"\214\001\n\024NormalInverse"
-    "Wishart\032<\n\006Shared\022\n\n\002mu\030\001 \003(\002\022\r\n\005kappa\030\002"
-    " \002(\002\022\013\n\003psi\030\003 \003(\002\022\n\n\002nu\030\004 \002(\002\0326\n\005Group\022\r"
-    "\n\005count\030\001 \002(\005\022\r\n\005sum_x\030\002 \003(\002\022\017\n\007sum_xxT\030"
-    "\003 \003(\002", 1245);
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
-    "distributions/io/schema.proto", &protobuf_RegisterTypes);
-  Clustering::default_instance_ = new Clustering();
-  Clustering_PitmanYor::default_instance_ = new Clustering_PitmanYor();
-  Clustering_LowEntropy::default_instance_ = new Clustering_LowEntropy();
-  BetaBernoulli::default_instance_ = new BetaBernoulli();
-  BetaBernoulli_Shared::default_instance_ = new BetaBernoulli_Shared();
-  BetaBernoulli_Group::default_instance_ = new BetaBernoulli_Group();
-  DirichletDiscrete::default_instance_ = new DirichletDiscrete();
-  DirichletDiscrete_Shared::default_instance_ = new DirichletDiscrete_Shared();
-  DirichletDiscrete_Group::default_instance_ = new DirichletDiscrete_Group();
-  DirichletProcessDiscrete::default_instance_ = new DirichletProcessDiscrete();
-  DirichletProcessDiscrete_Shared::default_instance_ = new DirichletProcessDiscrete_Shared();
-  DirichletProcessDiscrete_Group::default_instance_ = new DirichletProcessDiscrete_Group();
-  PitmanYorProcessDiscrete::default_instance_ = new PitmanYorProcessDiscrete();
-  PitmanYorProcessDiscrete_Shared::default_instance_ = new PitmanYorProcessDiscrete_Shared();
-  PitmanYorProcessDiscrete_Group::default_instance_ = new PitmanYorProcessDiscrete_Group();
-  GammaPoisson::default_instance_ = new GammaPoisson();
-  GammaPoisson_Shared::default_instance_ = new GammaPoisson_Shared();
-  GammaPoisson_Group::default_instance_ = new GammaPoisson_Group();
-  BetaNegativeBinomial::default_instance_ = new BetaNegativeBinomial();
-  BetaNegativeBinomial_Shared::default_instance_ = new BetaNegativeBinomial_Shared();
-  BetaNegativeBinomial_Group::default_instance_ = new BetaNegativeBinomial_Group();
-  NormalInverseChiSq::default_instance_ = new NormalInverseChiSq();
-  NormalInverseChiSq_Shared::default_instance_ = new NormalInverseChiSq_Shared();
-  NormalInverseChiSq_Group::default_instance_ = new NormalInverseChiSq_Group();
-  NormalInverseWishart::default_instance_ = new NormalInverseWishart();
-  NormalInverseWishart_Shared::default_instance_ = new NormalInverseWishart_Shared();
-  NormalInverseWishart_Group::default_instance_ = new NormalInverseWishart_Group();
-  Clustering::default_instance_->InitAsDefaultInstance();
-  Clustering_PitmanYor::default_instance_->InitAsDefaultInstance();
-  Clustering_LowEntropy::default_instance_->InitAsDefaultInstance();
-  BetaBernoulli::default_instance_->InitAsDefaultInstance();
-  BetaBernoulli_Shared::default_instance_->InitAsDefaultInstance();
-  BetaBernoulli_Group::default_instance_->InitAsDefaultInstance();
-  DirichletDiscrete::default_instance_->InitAsDefaultInstance();
-  DirichletDiscrete_Shared::default_instance_->InitAsDefaultInstance();
-  DirichletDiscrete_Group::default_instance_->InitAsDefaultInstance();
-  DirichletProcessDiscrete::default_instance_->InitAsDefaultInstance();
-  DirichletProcessDiscrete_Shared::default_instance_->InitAsDefaultInstance();
-  DirichletProcessDiscrete_Group::default_instance_->InitAsDefaultInstance();
-  PitmanYorProcessDiscrete::default_instance_->InitAsDefaultInstance();
-  PitmanYorProcessDiscrete_Shared::default_instance_->InitAsDefaultInstance();
-  PitmanYorProcessDiscrete_Group::default_instance_->InitAsDefaultInstance();
-  GammaPoisson::default_instance_->InitAsDefaultInstance();
-  GammaPoisson_Shared::default_instance_->InitAsDefaultInstance();
-  GammaPoisson_Group::default_instance_->InitAsDefaultInstance();
-  BetaNegativeBinomial::default_instance_->InitAsDefaultInstance();
-  BetaNegativeBinomial_Shared::default_instance_->InitAsDefaultInstance();
-  BetaNegativeBinomial_Group::default_instance_->InitAsDefaultInstance();
-  NormalInverseChiSq::default_instance_->InitAsDefaultInstance();
-  NormalInverseChiSq_Shared::default_instance_->InitAsDefaultInstance();
-  NormalInverseChiSq_Group::default_instance_->InitAsDefaultInstance();
-  NormalInverseWishart::default_instance_->InitAsDefaultInstance();
-  NormalInverseWishart_Shared::default_instance_->InitAsDefaultInstance();
-  NormalInverseWishart_Group::default_instance_->InitAsDefaultInstance();
-  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto);
-}
-
-// Force AddDescriptors() to be called at static initialization time.
-struct StaticDescriptorInitializer_distributions_2fio_2fschema_2eproto {
-  StaticDescriptorInitializer_distributions_2fio_2fschema_2eproto() {
-    protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  }
-} static_descriptor_initializer_distributions_2fio_2fschema_2eproto_;
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int Clustering_PitmanYor::kAlphaFieldNumber;
-const int Clustering_PitmanYor::kDFieldNumber;
-#endif  // !_MSC_VER
-
-Clustering_PitmanYor::Clustering_PitmanYor()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void Clustering_PitmanYor::InitAsDefaultInstance() {
-}
-
-Clustering_PitmanYor::Clustering_PitmanYor(const Clustering_PitmanYor& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void Clustering_PitmanYor::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  d_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-Clustering_PitmanYor::~Clustering_PitmanYor() {
-  SharedDtor();
-}
-
-void Clustering_PitmanYor::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void Clustering_PitmanYor::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* Clustering_PitmanYor::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return Clustering_PitmanYor_descriptor_;
-}
-
-const Clustering_PitmanYor& Clustering_PitmanYor::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-Clustering_PitmanYor* Clustering_PitmanYor::default_instance_ = NULL;
-
-Clustering_PitmanYor* Clustering_PitmanYor::New() const {
-  return new Clustering_PitmanYor;
-}
-
-void Clustering_PitmanYor::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-    d_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool Clustering_PitmanYor::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_d;
-        break;
-      }
-      
-      // required float d = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_d:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &d_)));
-          set_has_d();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void Clustering_PitmanYor::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // required float d = 2;
-  if (has_d()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->d(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* Clustering_PitmanYor::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // required float d = 2;
-  if (has_d()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->d(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int Clustering_PitmanYor::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float d = 2;
-    if (has_d()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void Clustering_PitmanYor::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const Clustering_PitmanYor* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const Clustering_PitmanYor*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void Clustering_PitmanYor::MergeFrom(const Clustering_PitmanYor& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-    if (from.has_d()) {
-      set_d(from.d());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void Clustering_PitmanYor::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Clustering_PitmanYor::CopyFrom(const Clustering_PitmanYor& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Clustering_PitmanYor::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void Clustering_PitmanYor::Swap(Clustering_PitmanYor* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    std::swap(d_, other->d_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata Clustering_PitmanYor::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = Clustering_PitmanYor_descriptor_;
-  metadata.reflection = Clustering_PitmanYor_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int Clustering_LowEntropy::kDatasetSizeFieldNumber;
-#endif  // !_MSC_VER
-
-Clustering_LowEntropy::Clustering_LowEntropy()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void Clustering_LowEntropy::InitAsDefaultInstance() {
-}
-
-Clustering_LowEntropy::Clustering_LowEntropy(const Clustering_LowEntropy& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void Clustering_LowEntropy::SharedCtor() {
-  _cached_size_ = 0;
-  dataset_size_ = GOOGLE_ULONGLONG(0);
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-Clustering_LowEntropy::~Clustering_LowEntropy() {
-  SharedDtor();
-}
-
-void Clustering_LowEntropy::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void Clustering_LowEntropy::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* Clustering_LowEntropy::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return Clustering_LowEntropy_descriptor_;
-}
-
-const Clustering_LowEntropy& Clustering_LowEntropy::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-Clustering_LowEntropy* Clustering_LowEntropy::default_instance_ = NULL;
-
-Clustering_LowEntropy* Clustering_LowEntropy::New() const {
-  return new Clustering_LowEntropy;
-}
-
-void Clustering_LowEntropy::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    dataset_size_ = GOOGLE_ULONGLONG(0);
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool Clustering_LowEntropy::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 dataset_size = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &dataset_size_)));
-          set_has_dataset_size();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void Clustering_LowEntropy::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 dataset_size = 1;
-  if (has_dataset_size()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->dataset_size(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* Clustering_LowEntropy::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 dataset_size = 1;
-  if (has_dataset_size()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->dataset_size(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int Clustering_LowEntropy::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 dataset_size = 1;
-    if (has_dataset_size()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->dataset_size());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void Clustering_LowEntropy::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const Clustering_LowEntropy* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const Clustering_LowEntropy*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void Clustering_LowEntropy::MergeFrom(const Clustering_LowEntropy& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_dataset_size()) {
-      set_dataset_size(from.dataset_size());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void Clustering_LowEntropy::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Clustering_LowEntropy::CopyFrom(const Clustering_LowEntropy& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Clustering_LowEntropy::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
-  
-  return true;
-}
-
-void Clustering_LowEntropy::Swap(Clustering_LowEntropy* other) {
-  if (other != this) {
-    std::swap(dataset_size_, other->dataset_size_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata Clustering_LowEntropy::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = Clustering_LowEntropy_descriptor_;
-  metadata.reflection = Clustering_LowEntropy_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int Clustering::kPitmanYorFieldNumber;
-const int Clustering::kLowEntropyFieldNumber;
-#endif  // !_MSC_VER
-
-Clustering::Clustering()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void Clustering::InitAsDefaultInstance() {
-  pitman_yor_ = const_cast< ::protobuf::distributions::Clustering_PitmanYor*>(&::protobuf::distributions::Clustering_PitmanYor::default_instance());
-  low_entropy_ = const_cast< ::protobuf::distributions::Clustering_LowEntropy*>(&::protobuf::distributions::Clustering_LowEntropy::default_instance());
-}
-
-Clustering::Clustering(const Clustering& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void Clustering::SharedCtor() {
-  _cached_size_ = 0;
-  pitman_yor_ = NULL;
-  low_entropy_ = NULL;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-Clustering::~Clustering() {
-  SharedDtor();
-}
-
-void Clustering::SharedDtor() {
-  if (this != default_instance_) {
-    delete pitman_yor_;
-    delete low_entropy_;
-  }
-}
-
-void Clustering::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* Clustering::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return Clustering_descriptor_;
-}
-
-const Clustering& Clustering::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-Clustering* Clustering::default_instance_ = NULL;
-
-Clustering* Clustering::New() const {
-  return new Clustering;
-}
-
-void Clustering::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (has_pitman_yor()) {
-      if (pitman_yor_ != NULL) pitman_yor_->::protobuf::distributions::Clustering_PitmanYor::Clear();
-    }
-    if (has_low_entropy()) {
-      if (low_entropy_ != NULL) low_entropy_->::protobuf::distributions::Clustering_LowEntropy::Clear();
-    }
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool Clustering::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
-               input, mutable_pitman_yor()));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(18)) goto parse_low_entropy;
-        break;
-      }
-      
-      // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
-         parse_low_entropy:
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
-               input, mutable_low_entropy()));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void Clustering::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-  if (has_pitman_yor()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, this->pitman_yor(), output);
-  }
-  
-  // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-  if (has_low_entropy()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2, this->low_entropy(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* Clustering::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-  if (has_pitman_yor()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteMessageNoVirtualToArray(
-        1, this->pitman_yor(), target);
-  }
-  
-  // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-  if (has_low_entropy()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteMessageNoVirtualToArray(
-        2, this->low_entropy(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int Clustering::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-    if (has_pitman_yor()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
-          this->pitman_yor());
-    }
-    
-    // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-    if (has_low_entropy()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
-          this->low_entropy());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void Clustering::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const Clustering* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const Clustering*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void Clustering::MergeFrom(const Clustering& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_pitman_yor()) {
-      mutable_pitman_yor()->::protobuf::distributions::Clustering_PitmanYor::MergeFrom(from.pitman_yor());
-    }
-    if (from.has_low_entropy()) {
-      mutable_low_entropy()->::protobuf::distributions::Clustering_LowEntropy::MergeFrom(from.low_entropy());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void Clustering::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Clustering::CopyFrom(const Clustering& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Clustering::IsInitialized() const {
-  
-  if (has_pitman_yor()) {
-    if (!this->pitman_yor().IsInitialized()) return false;
-  }
-  if (has_low_entropy()) {
-    if (!this->low_entropy().IsInitialized()) return false;
-  }
-  return true;
-}
-
-void Clustering::Swap(Clustering* other) {
-  if (other != this) {
-    std::swap(pitman_yor_, other->pitman_yor_);
-    std::swap(low_entropy_, other->low_entropy_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata Clustering::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = Clustering_descriptor_;
-  metadata.reflection = Clustering_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int BetaBernoulli_Shared::kAlphaFieldNumber;
-const int BetaBernoulli_Shared::kBetaFieldNumber;
-#endif  // !_MSC_VER
-
-BetaBernoulli_Shared::BetaBernoulli_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaBernoulli_Shared::InitAsDefaultInstance() {
-}
-
-BetaBernoulli_Shared::BetaBernoulli_Shared(const BetaBernoulli_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaBernoulli_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  beta_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaBernoulli_Shared::~BetaBernoulli_Shared() {
-  SharedDtor();
-}
-
-void BetaBernoulli_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaBernoulli_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaBernoulli_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaBernoulli_Shared_descriptor_;
-}
-
-const BetaBernoulli_Shared& BetaBernoulli_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaBernoulli_Shared* BetaBernoulli_Shared::default_instance_ = NULL;
-
-BetaBernoulli_Shared* BetaBernoulli_Shared::New() const {
-  return new BetaBernoulli_Shared;
-}
-
-void BetaBernoulli_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-    beta_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaBernoulli_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_beta;
-        break;
-      }
-      
-      // required float beta = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_beta:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &beta_)));
-          set_has_beta();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void BetaBernoulli_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // required float beta = 2;
-  if (has_beta()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->beta(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaBernoulli_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // required float beta = 2;
-  if (has_beta()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->beta(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaBernoulli_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float beta = 2;
-    if (has_beta()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaBernoulli_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaBernoulli_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaBernoulli_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaBernoulli_Shared::MergeFrom(const BetaBernoulli_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-    if (from.has_beta()) {
-      set_beta(from.beta());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaBernoulli_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaBernoulli_Shared::CopyFrom(const BetaBernoulli_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaBernoulli_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void BetaBernoulli_Shared::Swap(BetaBernoulli_Shared* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    std::swap(beta_, other->beta_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaBernoulli_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaBernoulli_Shared_descriptor_;
-  metadata.reflection = BetaBernoulli_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int BetaBernoulli_Group::kHeadsFieldNumber;
-const int BetaBernoulli_Group::kTailsFieldNumber;
-#endif  // !_MSC_VER
-
-BetaBernoulli_Group::BetaBernoulli_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaBernoulli_Group::InitAsDefaultInstance() {
-}
-
-BetaBernoulli_Group::BetaBernoulli_Group(const BetaBernoulli_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaBernoulli_Group::SharedCtor() {
-  _cached_size_ = 0;
-  heads_ = GOOGLE_ULONGLONG(0);
-  tails_ = GOOGLE_ULONGLONG(0);
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaBernoulli_Group::~BetaBernoulli_Group() {
-  SharedDtor();
-}
-
-void BetaBernoulli_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaBernoulli_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaBernoulli_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaBernoulli_Group_descriptor_;
-}
-
-const BetaBernoulli_Group& BetaBernoulli_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaBernoulli_Group* BetaBernoulli_Group::default_instance_ = NULL;
-
-BetaBernoulli_Group* BetaBernoulli_Group::New() const {
-  return new BetaBernoulli_Group;
-}
-
-void BetaBernoulli_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    heads_ = GOOGLE_ULONGLONG(0);
-    tails_ = GOOGLE_ULONGLONG(0);
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaBernoulli_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 heads = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &heads_)));
-          set_has_heads();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_tails;
-        break;
-      }
-      
-      // required uint64 tails = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_tails:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &tails_)));
-          set_has_tails();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void BetaBernoulli_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 heads = 1;
-  if (has_heads()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->heads(), output);
-  }
-  
-  // required uint64 tails = 2;
-  if (has_tails()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->tails(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaBernoulli_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 heads = 1;
-  if (has_heads()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->heads(), target);
-  }
-  
-  // required uint64 tails = 2;
-  if (has_tails()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->tails(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaBernoulli_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 heads = 1;
-    if (has_heads()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->heads());
-    }
-    
-    // required uint64 tails = 2;
-    if (has_tails()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->tails());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaBernoulli_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaBernoulli_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaBernoulli_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaBernoulli_Group::MergeFrom(const BetaBernoulli_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_heads()) {
-      set_heads(from.heads());
-    }
-    if (from.has_tails()) {
-      set_tails(from.tails());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaBernoulli_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaBernoulli_Group::CopyFrom(const BetaBernoulli_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaBernoulli_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void BetaBernoulli_Group::Swap(BetaBernoulli_Group* other) {
-  if (other != this) {
-    std::swap(heads_, other->heads_);
-    std::swap(tails_, other->tails_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaBernoulli_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaBernoulli_Group_descriptor_;
-  metadata.reflection = BetaBernoulli_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-BetaBernoulli::BetaBernoulli()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaBernoulli::InitAsDefaultInstance() {
-}
-
-BetaBernoulli::BetaBernoulli(const BetaBernoulli& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaBernoulli::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaBernoulli::~BetaBernoulli() {
-  SharedDtor();
-}
-
-void BetaBernoulli::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaBernoulli::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaBernoulli::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaBernoulli_descriptor_;
-}
-
-const BetaBernoulli& BetaBernoulli::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaBernoulli* BetaBernoulli::default_instance_ = NULL;
-
-BetaBernoulli* BetaBernoulli::New() const {
-  return new BetaBernoulli;
-}
-
-void BetaBernoulli::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaBernoulli::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void BetaBernoulli::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaBernoulli::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaBernoulli::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaBernoulli::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaBernoulli* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaBernoulli*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaBernoulli::MergeFrom(const BetaBernoulli& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaBernoulli::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaBernoulli::CopyFrom(const BetaBernoulli& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaBernoulli::IsInitialized() const {
-  
-  return true;
-}
-
-void BetaBernoulli::Swap(BetaBernoulli* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaBernoulli::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaBernoulli_descriptor_;
-  metadata.reflection = BetaBernoulli_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int DirichletDiscrete_Shared::kAlphasFieldNumber;
-#endif  // !_MSC_VER
-
-DirichletDiscrete_Shared::DirichletDiscrete_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletDiscrete_Shared::InitAsDefaultInstance() {
-}
-
-DirichletDiscrete_Shared::DirichletDiscrete_Shared(const DirichletDiscrete_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletDiscrete_Shared::~DirichletDiscrete_Shared() {
-  SharedDtor();
-}
-
-void DirichletDiscrete_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletDiscrete_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletDiscrete_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletDiscrete_Shared_descriptor_;
-}
-
-const DirichletDiscrete_Shared& DirichletDiscrete_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletDiscrete_Shared* DirichletDiscrete_Shared::default_instance_ = NULL;
-
-DirichletDiscrete_Shared* DirichletDiscrete_Shared::New() const {
-  return new DirichletDiscrete_Shared;
-}
-
-void DirichletDiscrete_Shared::Clear() {
-  alphas_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletDiscrete_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated float alphas = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_alphas:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 13, input, this->mutable_alphas())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_alphas())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(13)) goto parse_alphas;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletDiscrete_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated float alphas = 1;
-  for (int i = 0; i < this->alphas_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      1, this->alphas(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletDiscrete_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated float alphas = 1;
-  for (int i = 0; i < this->alphas_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(1, this->alphas(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletDiscrete_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  // repeated float alphas = 1;
-  {
-    int data_size = 0;
-    data_size = 4 * this->alphas_size();
-    total_size += 1 * this->alphas_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletDiscrete_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletDiscrete_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletDiscrete_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletDiscrete_Shared::MergeFrom(const DirichletDiscrete_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  alphas_.MergeFrom(from.alphas_);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletDiscrete_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete_Shared::CopyFrom(const DirichletDiscrete_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletDiscrete_Shared::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletDiscrete_Shared::Swap(DirichletDiscrete_Shared* other) {
-  if (other != this) {
-    alphas_.Swap(&other->alphas_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletDiscrete_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletDiscrete_Shared_descriptor_;
-  metadata.reflection = DirichletDiscrete_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int DirichletDiscrete_Group::kCountsFieldNumber;
-#endif  // !_MSC_VER
-
-DirichletDiscrete_Group::DirichletDiscrete_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletDiscrete_Group::InitAsDefaultInstance() {
-}
-
-DirichletDiscrete_Group::DirichletDiscrete_Group(const DirichletDiscrete_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete_Group::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletDiscrete_Group::~DirichletDiscrete_Group() {
-  SharedDtor();
-}
-
-void DirichletDiscrete_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletDiscrete_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletDiscrete_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletDiscrete_Group_descriptor_;
-}
-
-const DirichletDiscrete_Group& DirichletDiscrete_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletDiscrete_Group* DirichletDiscrete_Group::default_instance_ = NULL;
-
-DirichletDiscrete_Group* DirichletDiscrete_Group::New() const {
-  return new DirichletDiscrete_Group;
-}
-
-void DirichletDiscrete_Group::Clear() {
-  counts_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletDiscrete_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated uint64 counts = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_counts:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 8, input, this->mutable_counts())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_counts())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(8)) goto parse_counts;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletDiscrete_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated uint64 counts = 1;
-  for (int i = 0; i < this->counts_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      1, this->counts(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletDiscrete_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated uint64 counts = 1;
-  for (int i = 0; i < this->counts_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(1, this->counts(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletDiscrete_Group::ByteSize() const {
-  int total_size = 0;
-  
-  // repeated uint64 counts = 1;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->counts_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->counts(i));
-    }
-    total_size += 1 * this->counts_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletDiscrete_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletDiscrete_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletDiscrete_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletDiscrete_Group::MergeFrom(const DirichletDiscrete_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  counts_.MergeFrom(from.counts_);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletDiscrete_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete_Group::CopyFrom(const DirichletDiscrete_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletDiscrete_Group::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletDiscrete_Group::Swap(DirichletDiscrete_Group* other) {
-  if (other != this) {
-    counts_.Swap(&other->counts_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletDiscrete_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletDiscrete_Group_descriptor_;
-  metadata.reflection = DirichletDiscrete_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-DirichletDiscrete::DirichletDiscrete()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletDiscrete::InitAsDefaultInstance() {
-}
-
-DirichletDiscrete::DirichletDiscrete(const DirichletDiscrete& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletDiscrete::~DirichletDiscrete() {
-  SharedDtor();
-}
-
-void DirichletDiscrete::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletDiscrete::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletDiscrete::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletDiscrete_descriptor_;
-}
-
-const DirichletDiscrete& DirichletDiscrete::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletDiscrete* DirichletDiscrete::default_instance_ = NULL;
-
-DirichletDiscrete* DirichletDiscrete::New() const {
-  return new DirichletDiscrete;
-}
-
-void DirichletDiscrete::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletDiscrete::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletDiscrete::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletDiscrete::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletDiscrete::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletDiscrete::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletDiscrete* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletDiscrete*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletDiscrete::MergeFrom(const DirichletDiscrete& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletDiscrete::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete::CopyFrom(const DirichletDiscrete& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletDiscrete::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletDiscrete::Swap(DirichletDiscrete* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletDiscrete::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletDiscrete_descriptor_;
-  metadata.reflection = DirichletDiscrete_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int DirichletProcessDiscrete_Shared::kGammaFieldNumber;
-const int DirichletProcessDiscrete_Shared::kAlphaFieldNumber;
-const int DirichletProcessDiscrete_Shared::kValuesFieldNumber;
-const int DirichletProcessDiscrete_Shared::kBetasFieldNumber;
-const int DirichletProcessDiscrete_Shared::kCountsFieldNumber;
-#endif  // !_MSC_VER
-
-DirichletProcessDiscrete_Shared::DirichletProcessDiscrete_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletProcessDiscrete_Shared::InitAsDefaultInstance() {
-}
-
-DirichletProcessDiscrete_Shared::DirichletProcessDiscrete_Shared(const DirichletProcessDiscrete_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  gamma_ = 0;
-  alpha_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletProcessDiscrete_Shared::~DirichletProcessDiscrete_Shared() {
-  SharedDtor();
-}
-
-void DirichletProcessDiscrete_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletProcessDiscrete_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletProcessDiscrete_Shared_descriptor_;
-}
-
-const DirichletProcessDiscrete_Shared& DirichletProcessDiscrete_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletProcessDiscrete_Shared* DirichletProcessDiscrete_Shared::default_instance_ = NULL;
-
-DirichletProcessDiscrete_Shared* DirichletProcessDiscrete_Shared::New() const {
-  return new DirichletProcessDiscrete_Shared;
-}
-
-void DirichletProcessDiscrete_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    gamma_ = 0;
-    alpha_ = 0;
-  }
-  values_.Clear();
-  betas_.Clear();
-  counts_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletProcessDiscrete_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float gamma = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &gamma_)));
-          set_has_gamma();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_alpha;
-        break;
-      }
-      
-      // required float alpha = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_alpha:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(24)) goto parse_values;
-        break;
-      }
-      
-      // repeated uint32 values = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_values:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 24, input, this->mutable_values())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_values())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(24)) goto parse_values;
-        if (input->ExpectTag(37)) goto parse_betas;
-        break;
-      }
-      
-      // repeated float betas = 4;
-      case 4: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_betas:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 37, input, this->mutable_betas())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_betas())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(37)) goto parse_betas;
-        if (input->ExpectTag(40)) goto parse_counts;
-        break;
-      }
-      
-      // repeated uint64 counts = 5;
-      case 5: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_counts:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 40, input, this->mutable_counts())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_counts())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(40)) goto parse_counts;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletProcessDiscrete_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float gamma = 1;
-  if (has_gamma()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->gamma(), output);
-  }
-  
-  // required float alpha = 2;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->alpha(), output);
-  }
-  
-  // repeated uint32 values = 3;
-  for (int i = 0; i < this->values_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
-      3, this->values(i), output);
-  }
-  
-  // repeated float betas = 4;
-  for (int i = 0; i < this->betas_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      4, this->betas(i), output);
-  }
-  
-  // repeated uint64 counts = 5;
-  for (int i = 0; i < this->counts_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      5, this->counts(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletProcessDiscrete_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float gamma = 1;
-  if (has_gamma()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->gamma(), target);
-  }
-  
-  // required float alpha = 2;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->alpha(), target);
-  }
-  
-  // repeated uint32 values = 3;
-  for (int i = 0; i < this->values_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32ToArray(3, this->values(i), target);
-  }
-  
-  // repeated float betas = 4;
-  for (int i = 0; i < this->betas_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(4, this->betas(i), target);
-  }
-  
-  // repeated uint64 counts = 5;
-  for (int i = 0; i < this->counts_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(5, this->counts(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletProcessDiscrete_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float gamma = 1;
-    if (has_gamma()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float alpha = 2;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  // repeated uint32 values = 3;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->values_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt32Size(this->values(i));
-    }
-    total_size += 1 * this->values_size() + data_size;
-  }
-  
-  // repeated float betas = 4;
-  {
-    int data_size = 0;
-    data_size = 4 * this->betas_size();
-    total_size += 1 * this->betas_size() + data_size;
-  }
-  
-  // repeated uint64 counts = 5;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->counts_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->counts(i));
-    }
-    total_size += 1 * this->counts_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletProcessDiscrete_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletProcessDiscrete_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletProcessDiscrete_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletProcessDiscrete_Shared::MergeFrom(const DirichletProcessDiscrete_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  values_.MergeFrom(from.values_);
-  betas_.MergeFrom(from.betas_);
-  counts_.MergeFrom(from.counts_);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_gamma()) {
-      set_gamma(from.gamma());
-    }
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletProcessDiscrete_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete_Shared::CopyFrom(const DirichletProcessDiscrete_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletProcessDiscrete_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void DirichletProcessDiscrete_Shared::Swap(DirichletProcessDiscrete_Shared* other) {
-  if (other != this) {
-    std::swap(gamma_, other->gamma_);
-    std::swap(alpha_, other->alpha_);
-    values_.Swap(&other->values_);
-    betas_.Swap(&other->betas_);
-    counts_.Swap(&other->counts_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletProcessDiscrete_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletProcessDiscrete_Shared_descriptor_;
-  metadata.reflection = DirichletProcessDiscrete_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int DirichletProcessDiscrete_Group::kKeysFieldNumber;
-const int DirichletProcessDiscrete_Group::kValuesFieldNumber;
-#endif  // !_MSC_VER
-
-DirichletProcessDiscrete_Group::DirichletProcessDiscrete_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletProcessDiscrete_Group::InitAsDefaultInstance() {
-}
-
-DirichletProcessDiscrete_Group::DirichletProcessDiscrete_Group(const DirichletProcessDiscrete_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete_Group::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletProcessDiscrete_Group::~DirichletProcessDiscrete_Group() {
-  SharedDtor();
-}
-
-void DirichletProcessDiscrete_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletProcessDiscrete_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletProcessDiscrete_Group_descriptor_;
-}
-
-const DirichletProcessDiscrete_Group& DirichletProcessDiscrete_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletProcessDiscrete_Group* DirichletProcessDiscrete_Group::default_instance_ = NULL;
-
-DirichletProcessDiscrete_Group* DirichletProcessDiscrete_Group::New() const {
-  return new DirichletProcessDiscrete_Group;
-}
-
-void DirichletProcessDiscrete_Group::Clear() {
-  keys_.Clear();
-  values_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletProcessDiscrete_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated uint32 keys = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_keys:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 8, input, this->mutable_keys())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_keys())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(8)) goto parse_keys;
-        if (input->ExpectTag(16)) goto parse_values;
-        break;
-      }
-      
-      // repeated uint64 values = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_values:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 16, input, this->mutable_values())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_values())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_values;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletProcessDiscrete_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated uint32 keys = 1;
-  for (int i = 0; i < this->keys_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
-      1, this->keys(i), output);
-  }
-  
-  // repeated uint64 values = 2;
-  for (int i = 0; i < this->values_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      2, this->values(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletProcessDiscrete_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated uint32 keys = 1;
-  for (int i = 0; i < this->keys_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32ToArray(1, this->keys(i), target);
-  }
-  
-  // repeated uint64 values = 2;
-  for (int i = 0; i < this->values_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(2, this->values(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletProcessDiscrete_Group::ByteSize() const {
-  int total_size = 0;
-  
-  // repeated uint32 keys = 1;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->keys_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt32Size(this->keys(i));
-    }
-    total_size += 1 * this->keys_size() + data_size;
-  }
-  
-  // repeated uint64 values = 2;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->values_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->values(i));
-    }
-    total_size += 1 * this->values_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletProcessDiscrete_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletProcessDiscrete_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletProcessDiscrete_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletProcessDiscrete_Group::MergeFrom(const DirichletProcessDiscrete_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  keys_.MergeFrom(from.keys_);
-  values_.MergeFrom(from.values_);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletProcessDiscrete_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete_Group::CopyFrom(const DirichletProcessDiscrete_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletProcessDiscrete_Group::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletProcessDiscrete_Group::Swap(DirichletProcessDiscrete_Group* other) {
-  if (other != this) {
-    keys_.Swap(&other->keys_);
-    values_.Swap(&other->values_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletProcessDiscrete_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletProcessDiscrete_Group_descriptor_;
-  metadata.reflection = DirichletProcessDiscrete_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-DirichletProcessDiscrete::DirichletProcessDiscrete()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletProcessDiscrete::InitAsDefaultInstance() {
-}
-
-DirichletProcessDiscrete::DirichletProcessDiscrete(const DirichletProcessDiscrete& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletProcessDiscrete::~DirichletProcessDiscrete() {
-  SharedDtor();
-}
-
-void DirichletProcessDiscrete::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletProcessDiscrete::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletProcessDiscrete_descriptor_;
-}
-
-const DirichletProcessDiscrete& DirichletProcessDiscrete::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletProcessDiscrete* DirichletProcessDiscrete::default_instance_ = NULL;
-
-DirichletProcessDiscrete* DirichletProcessDiscrete::New() const {
-  return new DirichletProcessDiscrete;
-}
-
-void DirichletProcessDiscrete::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletProcessDiscrete::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletProcessDiscrete::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletProcessDiscrete::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletProcessDiscrete::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletProcessDiscrete::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletProcessDiscrete* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletProcessDiscrete*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletProcessDiscrete::MergeFrom(const DirichletProcessDiscrete& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletProcessDiscrete::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete::CopyFrom(const DirichletProcessDiscrete& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletProcessDiscrete::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletProcessDiscrete::Swap(DirichletProcessDiscrete* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletProcessDiscrete::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletProcessDiscrete_descriptor_;
-  metadata.reflection = DirichletProcessDiscrete_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int PitmanYorProcessDiscrete_Shared::kAlphaFieldNumber;
-const int PitmanYorProcessDiscrete_Shared::kDFieldNumber;
-const int PitmanYorProcessDiscrete_Shared::kCountsFieldNumber;
-#endif  // !_MSC_VER
-
-PitmanYorProcessDiscrete_Shared::PitmanYorProcessDiscrete_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void PitmanYorProcessDiscrete_Shared::InitAsDefaultInstance() {
-}
-
-PitmanYorProcessDiscrete_Shared::PitmanYorProcessDiscrete_Shared(const PitmanYorProcessDiscrete_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-PitmanYorProcessDiscrete_Shared::~PitmanYorProcessDiscrete_Shared() {
-  SharedDtor();
-}
-
-void PitmanYorProcessDiscrete_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void PitmanYorProcessDiscrete_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return PitmanYorProcessDiscrete_Shared_descriptor_;
-}
-
-const PitmanYorProcessDiscrete_Shared& PitmanYorProcessDiscrete_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-PitmanYorProcessDiscrete_Shared* PitmanYorProcessDiscrete_Shared::default_instance_ = NULL;
-
-PitmanYorProcessDiscrete_Shared* PitmanYorProcessDiscrete_Shared::New() const {
-  return new PitmanYorProcessDiscrete_Shared;
-}
-
-void PitmanYorProcessDiscrete_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-  }
-  d_.Clear();
-  counts_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool PitmanYorProcessDiscrete_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_d;
-        break;
-      }
-      
-      // repeated float d = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_d:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 21, input, this->mutable_d())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_d())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_d;
-        if (input->ExpectTag(24)) goto parse_counts;
-        break;
-      }
-      
-      // repeated uint64 counts = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_counts:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 24, input, this->mutable_counts())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_counts())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(24)) goto parse_counts;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void PitmanYorProcessDiscrete_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // repeated float d = 2;
-  for (int i = 0; i < this->d_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      2, this->d(i), output);
-  }
-  
-  // repeated uint64 counts = 3;
-  for (int i = 0; i < this->counts_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      3, this->counts(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* PitmanYorProcessDiscrete_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // repeated float d = 2;
-  for (int i = 0; i < this->d_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(2, this->d(i), target);
-  }
-  
-  // repeated uint64 counts = 3;
-  for (int i = 0; i < this->counts_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(3, this->counts(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int PitmanYorProcessDiscrete_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  // repeated float d = 2;
-  {
-    int data_size = 0;
-    data_size = 4 * this->d_size();
-    total_size += 1 * this->d_size() + data_size;
-  }
-  
-  // repeated uint64 counts = 3;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->counts_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->counts(i));
-    }
-    total_size += 1 * this->counts_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void PitmanYorProcessDiscrete_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const PitmanYorProcessDiscrete_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const PitmanYorProcessDiscrete_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void PitmanYorProcessDiscrete_Shared::MergeFrom(const PitmanYorProcessDiscrete_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  d_.MergeFrom(from.d_);
-  counts_.MergeFrom(from.counts_);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void PitmanYorProcessDiscrete_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete_Shared::CopyFrom(const PitmanYorProcessDiscrete_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool PitmanYorProcessDiscrete_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
-  
-  return true;
-}
-
-void PitmanYorProcessDiscrete_Shared::Swap(PitmanYorProcessDiscrete_Shared* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    d_.Swap(&other->d_);
-    counts_.Swap(&other->counts_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata PitmanYorProcessDiscrete_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = PitmanYorProcessDiscrete_Shared_descriptor_;
-  metadata.reflection = PitmanYorProcessDiscrete_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int PitmanYorProcessDiscrete_Group::kKeysFieldNumber;
-const int PitmanYorProcessDiscrete_Group::kValuesFieldNumber;
-#endif  // !_MSC_VER
-
-PitmanYorProcessDiscrete_Group::PitmanYorProcessDiscrete_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void PitmanYorProcessDiscrete_Group::InitAsDefaultInstance() {
-}
-
-PitmanYorProcessDiscrete_Group::PitmanYorProcessDiscrete_Group(const PitmanYorProcessDiscrete_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete_Group::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-PitmanYorProcessDiscrete_Group::~PitmanYorProcessDiscrete_Group() {
-  SharedDtor();
-}
-
-void PitmanYorProcessDiscrete_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void PitmanYorProcessDiscrete_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return PitmanYorProcessDiscrete_Group_descriptor_;
-}
-
-const PitmanYorProcessDiscrete_Group& PitmanYorProcessDiscrete_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-PitmanYorProcessDiscrete_Group* PitmanYorProcessDiscrete_Group::default_instance_ = NULL;
-
-PitmanYorProcessDiscrete_Group* PitmanYorProcessDiscrete_Group::New() const {
-  return new PitmanYorProcessDiscrete_Group;
-}
-
-void PitmanYorProcessDiscrete_Group::Clear() {
-  keys_.Clear();
-  values_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool PitmanYorProcessDiscrete_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated uint32 keys = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_keys:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 8, input, this->mutable_keys())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_keys())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(8)) goto parse_keys;
-        if (input->ExpectTag(16)) goto parse_values;
-        break;
-      }
-      
-      // repeated uint64 values = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_values:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 16, input, this->mutable_values())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_values())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_values;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void PitmanYorProcessDiscrete_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated uint32 keys = 1;
-  for (int i = 0; i < this->keys_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
-      1, this->keys(i), output);
-  }
-  
-  // repeated uint64 values = 2;
-  for (int i = 0; i < this->values_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      2, this->values(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* PitmanYorProcessDiscrete_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated uint32 keys = 1;
-  for (int i = 0; i < this->keys_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32ToArray(1, this->keys(i), target);
-  }
-  
-  // repeated uint64 values = 2;
-  for (int i = 0; i < this->values_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(2, this->values(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int PitmanYorProcessDiscrete_Group::ByteSize() const {
-  int total_size = 0;
-  
-  // repeated uint32 keys = 1;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->keys_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt32Size(this->keys(i));
-    }
-    total_size += 1 * this->keys_size() + data_size;
-  }
-  
-  // repeated uint64 values = 2;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->values_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->values(i));
-    }
-    total_size += 1 * this->values_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void PitmanYorProcessDiscrete_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const PitmanYorProcessDiscrete_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const PitmanYorProcessDiscrete_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void PitmanYorProcessDiscrete_Group::MergeFrom(const PitmanYorProcessDiscrete_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  keys_.MergeFrom(from.keys_);
-  values_.MergeFrom(from.values_);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void PitmanYorProcessDiscrete_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete_Group::CopyFrom(const PitmanYorProcessDiscrete_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool PitmanYorProcessDiscrete_Group::IsInitialized() const {
-  
-  return true;
-}
-
-void PitmanYorProcessDiscrete_Group::Swap(PitmanYorProcessDiscrete_Group* other) {
-  if (other != this) {
-    keys_.Swap(&other->keys_);
-    values_.Swap(&other->values_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata PitmanYorProcessDiscrete_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = PitmanYorProcessDiscrete_Group_descriptor_;
-  metadata.reflection = PitmanYorProcessDiscrete_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-PitmanYorProcessDiscrete::PitmanYorProcessDiscrete()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void PitmanYorProcessDiscrete::InitAsDefaultInstance() {
-}
-
-PitmanYorProcessDiscrete::PitmanYorProcessDiscrete(const PitmanYorProcessDiscrete& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-PitmanYorProcessDiscrete::~PitmanYorProcessDiscrete() {
-  SharedDtor();
-}
-
-void PitmanYorProcessDiscrete::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void PitmanYorProcessDiscrete::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return PitmanYorProcessDiscrete_descriptor_;
-}
-
-const PitmanYorProcessDiscrete& PitmanYorProcessDiscrete::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-PitmanYorProcessDiscrete* PitmanYorProcessDiscrete::default_instance_ = NULL;
-
-PitmanYorProcessDiscrete* PitmanYorProcessDiscrete::New() const {
-  return new PitmanYorProcessDiscrete;
-}
-
-void PitmanYorProcessDiscrete::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool PitmanYorProcessDiscrete::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void PitmanYorProcessDiscrete::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* PitmanYorProcessDiscrete::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int PitmanYorProcessDiscrete::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void PitmanYorProcessDiscrete::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const PitmanYorProcessDiscrete* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const PitmanYorProcessDiscrete*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void PitmanYorProcessDiscrete::MergeFrom(const PitmanYorProcessDiscrete& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void PitmanYorProcessDiscrete::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete::CopyFrom(const PitmanYorProcessDiscrete& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool PitmanYorProcessDiscrete::IsInitialized() const {
-  
-  return true;
-}
-
-void PitmanYorProcessDiscrete::Swap(PitmanYorProcessDiscrete* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata PitmanYorProcessDiscrete::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = PitmanYorProcessDiscrete_descriptor_;
-  metadata.reflection = PitmanYorProcessDiscrete_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int GammaPoisson_Shared::kAlphaFieldNumber;
-const int GammaPoisson_Shared::kInvBetaFieldNumber;
-#endif  // !_MSC_VER
-
-GammaPoisson_Shared::GammaPoisson_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void GammaPoisson_Shared::InitAsDefaultInstance() {
-}
-
-GammaPoisson_Shared::GammaPoisson_Shared(const GammaPoisson_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void GammaPoisson_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  inv_beta_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-GammaPoisson_Shared::~GammaPoisson_Shared() {
-  SharedDtor();
-}
-
-void GammaPoisson_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void GammaPoisson_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* GammaPoisson_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return GammaPoisson_Shared_descriptor_;
-}
-
-const GammaPoisson_Shared& GammaPoisson_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-GammaPoisson_Shared* GammaPoisson_Shared::default_instance_ = NULL;
-
-GammaPoisson_Shared* GammaPoisson_Shared::New() const {
-  return new GammaPoisson_Shared;
-}
-
-void GammaPoisson_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-    inv_beta_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool GammaPoisson_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_inv_beta;
-        break;
-      }
-      
-      // required float inv_beta = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_inv_beta:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &inv_beta_)));
-          set_has_inv_beta();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void GammaPoisson_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // required float inv_beta = 2;
-  if (has_inv_beta()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->inv_beta(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* GammaPoisson_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // required float inv_beta = 2;
-  if (has_inv_beta()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->inv_beta(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int GammaPoisson_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float inv_beta = 2;
-    if (has_inv_beta()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void GammaPoisson_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const GammaPoisson_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const GammaPoisson_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void GammaPoisson_Shared::MergeFrom(const GammaPoisson_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-    if (from.has_inv_beta()) {
-      set_inv_beta(from.inv_beta());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void GammaPoisson_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void GammaPoisson_Shared::CopyFrom(const GammaPoisson_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool GammaPoisson_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void GammaPoisson_Shared::Swap(GammaPoisson_Shared* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    std::swap(inv_beta_, other->inv_beta_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata GammaPoisson_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = GammaPoisson_Shared_descriptor_;
-  metadata.reflection = GammaPoisson_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int GammaPoisson_Group::kCountFieldNumber;
-const int GammaPoisson_Group::kSumFieldNumber;
-const int GammaPoisson_Group::kLogProdFieldNumber;
-#endif  // !_MSC_VER
-
-GammaPoisson_Group::GammaPoisson_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void GammaPoisson_Group::InitAsDefaultInstance() {
-}
-
-GammaPoisson_Group::GammaPoisson_Group(const GammaPoisson_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void GammaPoisson_Group::SharedCtor() {
-  _cached_size_ = 0;
-  count_ = GOOGLE_ULONGLONG(0);
-  sum_ = GOOGLE_ULONGLONG(0);
-  log_prod_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-GammaPoisson_Group::~GammaPoisson_Group() {
-  SharedDtor();
-}
-
-void GammaPoisson_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void GammaPoisson_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* GammaPoisson_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return GammaPoisson_Group_descriptor_;
-}
-
-const GammaPoisson_Group& GammaPoisson_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-GammaPoisson_Group* GammaPoisson_Group::default_instance_ = NULL;
-
-GammaPoisson_Group* GammaPoisson_Group::New() const {
-  return new GammaPoisson_Group;
-}
-
-void GammaPoisson_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    count_ = GOOGLE_ULONGLONG(0);
-    sum_ = GOOGLE_ULONGLONG(0);
-    log_prod_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool GammaPoisson_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 count = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &count_)));
-          set_has_count();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_sum;
-        break;
-      }
-      
-      // required uint64 sum = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_sum:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &sum_)));
-          set_has_sum();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_log_prod;
-        break;
-      }
-      
-      // required float log_prod = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_log_prod:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &log_prod_)));
-          set_has_log_prod();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void GammaPoisson_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->count(), output);
-  }
-  
-  // required uint64 sum = 2;
-  if (has_sum()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->sum(), output);
-  }
-  
-  // required float log_prod = 3;
-  if (has_log_prod()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->log_prod(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* GammaPoisson_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->count(), target);
-  }
-  
-  // required uint64 sum = 2;
-  if (has_sum()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->sum(), target);
-  }
-  
-  // required float log_prod = 3;
-  if (has_log_prod()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->log_prod(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int GammaPoisson_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 count = 1;
-    if (has_count()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->count());
-    }
-    
-    // required uint64 sum = 2;
-    if (has_sum()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->sum());
-    }
-    
-    // required float log_prod = 3;
-    if (has_log_prod()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void GammaPoisson_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const GammaPoisson_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const GammaPoisson_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void GammaPoisson_Group::MergeFrom(const GammaPoisson_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_count()) {
-      set_count(from.count());
-    }
-    if (from.has_sum()) {
-      set_sum(from.sum());
-    }
-    if (from.has_log_prod()) {
-      set_log_prod(from.log_prod());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void GammaPoisson_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void GammaPoisson_Group::CopyFrom(const GammaPoisson_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool GammaPoisson_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
-  
-  return true;
-}
-
-void GammaPoisson_Group::Swap(GammaPoisson_Group* other) {
-  if (other != this) {
-    std::swap(count_, other->count_);
-    std::swap(sum_, other->sum_);
-    std::swap(log_prod_, other->log_prod_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata GammaPoisson_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = GammaPoisson_Group_descriptor_;
-  metadata.reflection = GammaPoisson_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-GammaPoisson::GammaPoisson()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void GammaPoisson::InitAsDefaultInstance() {
-}
-
-GammaPoisson::GammaPoisson(const GammaPoisson& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void GammaPoisson::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-GammaPoisson::~GammaPoisson() {
-  SharedDtor();
-}
-
-void GammaPoisson::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void GammaPoisson::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* GammaPoisson::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return GammaPoisson_descriptor_;
-}
-
-const GammaPoisson& GammaPoisson::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-GammaPoisson* GammaPoisson::default_instance_ = NULL;
-
-GammaPoisson* GammaPoisson::New() const {
-  return new GammaPoisson;
-}
-
-void GammaPoisson::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool GammaPoisson::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void GammaPoisson::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* GammaPoisson::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int GammaPoisson::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void GammaPoisson::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const GammaPoisson* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const GammaPoisson*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void GammaPoisson::MergeFrom(const GammaPoisson& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void GammaPoisson::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void GammaPoisson::CopyFrom(const GammaPoisson& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool GammaPoisson::IsInitialized() const {
-  
-  return true;
-}
-
-void GammaPoisson::Swap(GammaPoisson* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata GammaPoisson::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = GammaPoisson_descriptor_;
-  metadata.reflection = GammaPoisson_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int BetaNegativeBinomial_Shared::kAlphaFieldNumber;
-const int BetaNegativeBinomial_Shared::kBetaFieldNumber;
-const int BetaNegativeBinomial_Shared::kRFieldNumber;
-#endif  // !_MSC_VER
-
-BetaNegativeBinomial_Shared::BetaNegativeBinomial_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaNegativeBinomial_Shared::InitAsDefaultInstance() {
-}
-
-BetaNegativeBinomial_Shared::BetaNegativeBinomial_Shared(const BetaNegativeBinomial_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  beta_ = 0;
-  r_ = GOOGLE_ULONGLONG(0);
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaNegativeBinomial_Shared::~BetaNegativeBinomial_Shared() {
-  SharedDtor();
-}
-
-void BetaNegativeBinomial_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaNegativeBinomial_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaNegativeBinomial_Shared_descriptor_;
-}
-
-const BetaNegativeBinomial_Shared& BetaNegativeBinomial_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaNegativeBinomial_Shared* BetaNegativeBinomial_Shared::default_instance_ = NULL;
-
-BetaNegativeBinomial_Shared* BetaNegativeBinomial_Shared::New() const {
-  return new BetaNegativeBinomial_Shared;
-}
-
-void BetaNegativeBinomial_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-    beta_ = 0;
-    r_ = GOOGLE_ULONGLONG(0);
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaNegativeBinomial_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_beta;
-        break;
-      }
-      
-      // required float beta = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_beta:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &beta_)));
-          set_has_beta();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(24)) goto parse_r;
-        break;
-      }
-      
-      // required uint64 r = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_r:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &r_)));
-          set_has_r();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void BetaNegativeBinomial_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // required float beta = 2;
-  if (has_beta()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->beta(), output);
-  }
-  
-  // required uint64 r = 3;
-  if (has_r()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->r(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaNegativeBinomial_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // required float beta = 2;
-  if (has_beta()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->beta(), target);
-  }
-  
-  // required uint64 r = 3;
-  if (has_r()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->r(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaNegativeBinomial_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float beta = 2;
-    if (has_beta()) {
-      total_size += 1 + 4;
-    }
-    
-    // required uint64 r = 3;
-    if (has_r()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->r());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaNegativeBinomial_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaNegativeBinomial_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaNegativeBinomial_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaNegativeBinomial_Shared::MergeFrom(const BetaNegativeBinomial_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-    if (from.has_beta()) {
-      set_beta(from.beta());
-    }
-    if (from.has_r()) {
-      set_r(from.r());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaNegativeBinomial_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial_Shared::CopyFrom(const BetaNegativeBinomial_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaNegativeBinomial_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
-  
-  return true;
-}
-
-void BetaNegativeBinomial_Shared::Swap(BetaNegativeBinomial_Shared* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    std::swap(beta_, other->beta_);
-    std::swap(r_, other->r_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaNegativeBinomial_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaNegativeBinomial_Shared_descriptor_;
-  metadata.reflection = BetaNegativeBinomial_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int BetaNegativeBinomial_Group::kCountFieldNumber;
-const int BetaNegativeBinomial_Group::kSumFieldNumber;
-#endif  // !_MSC_VER
-
-BetaNegativeBinomial_Group::BetaNegativeBinomial_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaNegativeBinomial_Group::InitAsDefaultInstance() {
-}
-
-BetaNegativeBinomial_Group::BetaNegativeBinomial_Group(const BetaNegativeBinomial_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial_Group::SharedCtor() {
-  _cached_size_ = 0;
-  count_ = GOOGLE_ULONGLONG(0);
-  sum_ = GOOGLE_ULONGLONG(0);
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaNegativeBinomial_Group::~BetaNegativeBinomial_Group() {
-  SharedDtor();
-}
-
-void BetaNegativeBinomial_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaNegativeBinomial_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaNegativeBinomial_Group_descriptor_;
-}
-
-const BetaNegativeBinomial_Group& BetaNegativeBinomial_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaNegativeBinomial_Group* BetaNegativeBinomial_Group::default_instance_ = NULL;
-
-BetaNegativeBinomial_Group* BetaNegativeBinomial_Group::New() const {
-  return new BetaNegativeBinomial_Group;
-}
-
-void BetaNegativeBinomial_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    count_ = GOOGLE_ULONGLONG(0);
-    sum_ = GOOGLE_ULONGLONG(0);
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaNegativeBinomial_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 count = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &count_)));
-          set_has_count();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_sum;
-        break;
-      }
-      
-      // required uint64 sum = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_sum:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &sum_)));
-          set_has_sum();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void BetaNegativeBinomial_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->count(), output);
-  }
-  
-  // required uint64 sum = 2;
-  if (has_sum()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->sum(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaNegativeBinomial_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->count(), target);
-  }
-  
-  // required uint64 sum = 2;
-  if (has_sum()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->sum(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaNegativeBinomial_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 count = 1;
-    if (has_count()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->count());
-    }
-    
-    // required uint64 sum = 2;
-    if (has_sum()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->sum());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaNegativeBinomial_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaNegativeBinomial_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaNegativeBinomial_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaNegativeBinomial_Group::MergeFrom(const BetaNegativeBinomial_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_count()) {
-      set_count(from.count());
-    }
-    if (from.has_sum()) {
-      set_sum(from.sum());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaNegativeBinomial_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial_Group::CopyFrom(const BetaNegativeBinomial_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaNegativeBinomial_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void BetaNegativeBinomial_Group::Swap(BetaNegativeBinomial_Group* other) {
-  if (other != this) {
-    std::swap(count_, other->count_);
-    std::swap(sum_, other->sum_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaNegativeBinomial_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaNegativeBinomial_Group_descriptor_;
-  metadata.reflection = BetaNegativeBinomial_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-BetaNegativeBinomial::BetaNegativeBinomial()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaNegativeBinomial::InitAsDefaultInstance() {
-}
-
-BetaNegativeBinomial::BetaNegativeBinomial(const BetaNegativeBinomial& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaNegativeBinomial::~BetaNegativeBinomial() {
-  SharedDtor();
-}
-
-void BetaNegativeBinomial::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaNegativeBinomial::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaNegativeBinomial::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaNegativeBinomial_descriptor_;
-}
-
-const BetaNegativeBinomial& BetaNegativeBinomial::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaNegativeBinomial* BetaNegativeBinomial::default_instance_ = NULL;
-
-BetaNegativeBinomial* BetaNegativeBinomial::New() const {
-  return new BetaNegativeBinomial;
-}
-
-void BetaNegativeBinomial::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaNegativeBinomial::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void BetaNegativeBinomial::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaNegativeBinomial::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaNegativeBinomial::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaNegativeBinomial::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaNegativeBinomial* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaNegativeBinomial*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaNegativeBinomial::MergeFrom(const BetaNegativeBinomial& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaNegativeBinomial::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial::CopyFrom(const BetaNegativeBinomial& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaNegativeBinomial::IsInitialized() const {
-  
-  return true;
-}
-
-void BetaNegativeBinomial::Swap(BetaNegativeBinomial* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaNegativeBinomial::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaNegativeBinomial_descriptor_;
-  metadata.reflection = BetaNegativeBinomial_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int NormalInverseChiSq_Shared::kMuFieldNumber;
-const int NormalInverseChiSq_Shared::kKappaFieldNumber;
-const int NormalInverseChiSq_Shared::kSigmasqFieldNumber;
-const int NormalInverseChiSq_Shared::kNuFieldNumber;
-#endif  // !_MSC_VER
-
-NormalInverseChiSq_Shared::NormalInverseChiSq_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseChiSq_Shared::InitAsDefaultInstance() {
-}
-
-NormalInverseChiSq_Shared::NormalInverseChiSq_Shared(const NormalInverseChiSq_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  mu_ = 0;
-  kappa_ = 0;
-  sigmasq_ = 0;
-  nu_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseChiSq_Shared::~NormalInverseChiSq_Shared() {
-  SharedDtor();
-}
-
-void NormalInverseChiSq_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseChiSq_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseChiSq_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseChiSq_Shared_descriptor_;
-}
-
-const NormalInverseChiSq_Shared& NormalInverseChiSq_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseChiSq_Shared* NormalInverseChiSq_Shared::default_instance_ = NULL;
-
-NormalInverseChiSq_Shared* NormalInverseChiSq_Shared::New() const {
-  return new NormalInverseChiSq_Shared;
-}
-
-void NormalInverseChiSq_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    mu_ = 0;
-    kappa_ = 0;
-    sigmasq_ = 0;
-    nu_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseChiSq_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float mu = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &mu_)));
-          set_has_mu();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_kappa;
-        break;
-      }
-      
-      // required float kappa = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_kappa:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &kappa_)));
-          set_has_kappa();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_sigmasq;
-        break;
-      }
-      
-      // required float sigmasq = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_sigmasq:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &sigmasq_)));
-          set_has_sigmasq();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(37)) goto parse_nu;
-        break;
-      }
-      
-      // required float nu = 4;
-      case 4: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_nu:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &nu_)));
-          set_has_nu();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseChiSq_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float mu = 1;
-  if (has_mu()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->mu(), output);
-  }
-  
-  // required float kappa = 2;
-  if (has_kappa()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->kappa(), output);
-  }
-  
-  // required float sigmasq = 3;
-  if (has_sigmasq()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->sigmasq(), output);
-  }
-  
-  // required float nu = 4;
-  if (has_nu()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->nu(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseChiSq_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float mu = 1;
-  if (has_mu()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->mu(), target);
-  }
-  
-  // required float kappa = 2;
-  if (has_kappa()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->kappa(), target);
-  }
-  
-  // required float sigmasq = 3;
-  if (has_sigmasq()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->sigmasq(), target);
-  }
-  
-  // required float nu = 4;
-  if (has_nu()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(4, this->nu(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseChiSq_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float mu = 1;
-    if (has_mu()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float kappa = 2;
-    if (has_kappa()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float sigmasq = 3;
-    if (has_sigmasq()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float nu = 4;
-    if (has_nu()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseChiSq_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseChiSq_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseChiSq_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseChiSq_Shared::MergeFrom(const NormalInverseChiSq_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_mu()) {
-      set_mu(from.mu());
-    }
-    if (from.has_kappa()) {
-      set_kappa(from.kappa());
-    }
-    if (from.has_sigmasq()) {
-      set_sigmasq(from.sigmasq());
-    }
-    if (from.has_nu()) {
-      set_nu(from.nu());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseChiSq_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq_Shared::CopyFrom(const NormalInverseChiSq_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseChiSq_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false;
-  
-  return true;
-}
-
-void NormalInverseChiSq_Shared::Swap(NormalInverseChiSq_Shared* other) {
-  if (other != this) {
-    std::swap(mu_, other->mu_);
-    std::swap(kappa_, other->kappa_);
-    std::swap(sigmasq_, other->sigmasq_);
-    std::swap(nu_, other->nu_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseChiSq_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseChiSq_Shared_descriptor_;
-  metadata.reflection = NormalInverseChiSq_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int NormalInverseChiSq_Group::kCountFieldNumber;
-const int NormalInverseChiSq_Group::kMeanFieldNumber;
-const int NormalInverseChiSq_Group::kCountTimesVarianceFieldNumber;
-#endif  // !_MSC_VER
-
-NormalInverseChiSq_Group::NormalInverseChiSq_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseChiSq_Group::InitAsDefaultInstance() {
-}
-
-NormalInverseChiSq_Group::NormalInverseChiSq_Group(const NormalInverseChiSq_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq_Group::SharedCtor() {
-  _cached_size_ = 0;
-  count_ = GOOGLE_ULONGLONG(0);
-  mean_ = 0;
-  count_times_variance_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseChiSq_Group::~NormalInverseChiSq_Group() {
-  SharedDtor();
-}
-
-void NormalInverseChiSq_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseChiSq_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseChiSq_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseChiSq_Group_descriptor_;
-}
-
-const NormalInverseChiSq_Group& NormalInverseChiSq_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseChiSq_Group* NormalInverseChiSq_Group::default_instance_ = NULL;
-
-NormalInverseChiSq_Group* NormalInverseChiSq_Group::New() const {
-  return new NormalInverseChiSq_Group;
-}
-
-void NormalInverseChiSq_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    count_ = GOOGLE_ULONGLONG(0);
-    mean_ = 0;
-    count_times_variance_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseChiSq_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 count = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &count_)));
-          set_has_count();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_mean;
-        break;
-      }
-      
-      // required float mean = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_mean:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &mean_)));
-          set_has_mean();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_count_times_variance;
-        break;
-      }
-      
-      // required float count_times_variance = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_count_times_variance:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &count_times_variance_)));
-          set_has_count_times_variance();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseChiSq_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->count(), output);
-  }
-  
-  // required float mean = 2;
-  if (has_mean()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->mean(), output);
-  }
-  
-  // required float count_times_variance = 3;
-  if (has_count_times_variance()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->count_times_variance(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseChiSq_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->count(), target);
-  }
-  
-  // required float mean = 2;
-  if (has_mean()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->mean(), target);
-  }
-  
-  // required float count_times_variance = 3;
-  if (has_count_times_variance()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->count_times_variance(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseChiSq_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 count = 1;
-    if (has_count()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->count());
-    }
-    
-    // required float mean = 2;
-    if (has_mean()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float count_times_variance = 3;
-    if (has_count_times_variance()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseChiSq_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseChiSq_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseChiSq_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseChiSq_Group::MergeFrom(const NormalInverseChiSq_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_count()) {
-      set_count(from.count());
-    }
-    if (from.has_mean()) {
-      set_mean(from.mean());
-    }
-    if (from.has_count_times_variance()) {
-      set_count_times_variance(from.count_times_variance());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseChiSq_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq_Group::CopyFrom(const NormalInverseChiSq_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseChiSq_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
-  
-  return true;
-}
-
-void NormalInverseChiSq_Group::Swap(NormalInverseChiSq_Group* other) {
-  if (other != this) {
-    std::swap(count_, other->count_);
-    std::swap(mean_, other->mean_);
-    std::swap(count_times_variance_, other->count_times_variance_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseChiSq_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseChiSq_Group_descriptor_;
-  metadata.reflection = NormalInverseChiSq_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-NormalInverseChiSq::NormalInverseChiSq()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseChiSq::InitAsDefaultInstance() {
-}
-
-NormalInverseChiSq::NormalInverseChiSq(const NormalInverseChiSq& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseChiSq::~NormalInverseChiSq() {
-  SharedDtor();
-}
-
-void NormalInverseChiSq::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseChiSq::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseChiSq::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseChiSq_descriptor_;
-}
-
-const NormalInverseChiSq& NormalInverseChiSq::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseChiSq* NormalInverseChiSq::default_instance_ = NULL;
-
-NormalInverseChiSq* NormalInverseChiSq::New() const {
-  return new NormalInverseChiSq;
-}
-
-void NormalInverseChiSq::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseChiSq::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseChiSq::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseChiSq::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseChiSq::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseChiSq::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseChiSq* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseChiSq*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseChiSq::MergeFrom(const NormalInverseChiSq& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseChiSq::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq::CopyFrom(const NormalInverseChiSq& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseChiSq::IsInitialized() const {
-  
-  return true;
-}
-
-void NormalInverseChiSq::Swap(NormalInverseChiSq* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseChiSq::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseChiSq_descriptor_;
-  metadata.reflection = NormalInverseChiSq_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int NormalInverseWishart_Shared::kMuFieldNumber;
-const int NormalInverseWishart_Shared::kKappaFieldNumber;
-const int NormalInverseWishart_Shared::kPsiFieldNumber;
-const int NormalInverseWishart_Shared::kNuFieldNumber;
-#endif  // !_MSC_VER
-
-NormalInverseWishart_Shared::NormalInverseWishart_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseWishart_Shared::InitAsDefaultInstance() {
-}
-
-NormalInverseWishart_Shared::NormalInverseWishart_Shared(const NormalInverseWishart_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  kappa_ = 0;
-  nu_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseWishart_Shared::~NormalInverseWishart_Shared() {
-  SharedDtor();
-}
-
-void NormalInverseWishart_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseWishart_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseWishart_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseWishart_Shared_descriptor_;
-}
-
-const NormalInverseWishart_Shared& NormalInverseWishart_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseWishart_Shared* NormalInverseWishart_Shared::default_instance_ = NULL;
-
-NormalInverseWishart_Shared* NormalInverseWishart_Shared::New() const {
-  return new NormalInverseWishart_Shared;
-}
-
-void NormalInverseWishart_Shared::Clear() {
-  if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) {
-    kappa_ = 0;
-    nu_ = 0;
-  }
-  mu_.Clear();
-  psi_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseWishart_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated float mu = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_mu:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 13, input, this->mutable_mu())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_mu())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(13)) goto parse_mu;
-        if (input->ExpectTag(21)) goto parse_kappa;
-        break;
-      }
-      
-      // required float kappa = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_kappa:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &kappa_)));
-          set_has_kappa();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_psi;
-        break;
-      }
-      
-      // repeated float psi = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_psi:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 29, input, this->mutable_psi())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_psi())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_psi;
-        if (input->ExpectTag(37)) goto parse_nu;
-        break;
-      }
-      
-      // required float nu = 4;
-      case 4: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_nu:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &nu_)));
-          set_has_nu();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseWishart_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated float mu = 1;
-  for (int i = 0; i < this->mu_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      1, this->mu(i), output);
-  }
-  
-  // required float kappa = 2;
-  if (has_kappa()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->kappa(), output);
-  }
-  
-  // repeated float psi = 3;
-  for (int i = 0; i < this->psi_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      3, this->psi(i), output);
-  }
-  
-  // required float nu = 4;
-  if (has_nu()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->nu(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseWishart_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated float mu = 1;
-  for (int i = 0; i < this->mu_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(1, this->mu(i), target);
-  }
-  
-  // required float kappa = 2;
-  if (has_kappa()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->kappa(), target);
-  }
-  
-  // repeated float psi = 3;
-  for (int i = 0; i < this->psi_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(3, this->psi(i), target);
-  }
-  
-  // required float nu = 4;
-  if (has_nu()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(4, this->nu(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseWishart_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) {
-    // required float kappa = 2;
-    if (has_kappa()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float nu = 4;
-    if (has_nu()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  // repeated float mu = 1;
-  {
-    int data_size = 0;
-    data_size = 4 * this->mu_size();
-    total_size += 1 * this->mu_size() + data_size;
-  }
-  
-  // repeated float psi = 3;
-  {
-    int data_size = 0;
-    data_size = 4 * this->psi_size();
-    total_size += 1 * this->psi_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseWishart_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseWishart_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseWishart_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseWishart_Shared::MergeFrom(const NormalInverseWishart_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mu_.MergeFrom(from.mu_);
-  psi_.MergeFrom(from.psi_);
-  if (from._has_bits_[1 / 32] & (0xffu << (1 % 32))) {
-    if (from.has_kappa()) {
-      set_kappa(from.kappa());
-    }
-    if (from.has_nu()) {
-      set_nu(from.nu());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseWishart_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart_Shared::CopyFrom(const NormalInverseWishart_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseWishart_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x0000000a) != 0x0000000a) return false;
-  
-  return true;
-}
-
-void NormalInverseWishart_Shared::Swap(NormalInverseWishart_Shared* other) {
-  if (other != this) {
-    mu_.Swap(&other->mu_);
-    std::swap(kappa_, other->kappa_);
-    psi_.Swap(&other->psi_);
-    std::swap(nu_, other->nu_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseWishart_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseWishart_Shared_descriptor_;
-  metadata.reflection = NormalInverseWishart_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int NormalInverseWishart_Group::kCountFieldNumber;
-const int NormalInverseWishart_Group::kSumXFieldNumber;
-const int NormalInverseWishart_Group::kSumXxTFieldNumber;
-#endif  // !_MSC_VER
-
-NormalInverseWishart_Group::NormalInverseWishart_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseWishart_Group::InitAsDefaultInstance() {
-}
-
-NormalInverseWishart_Group::NormalInverseWishart_Group(const NormalInverseWishart_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart_Group::SharedCtor() {
-  _cached_size_ = 0;
-  count_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseWishart_Group::~NormalInverseWishart_Group() {
-  SharedDtor();
-}
-
-void NormalInverseWishart_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseWishart_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseWishart_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseWishart_Group_descriptor_;
-}
-
-const NormalInverseWishart_Group& NormalInverseWishart_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseWishart_Group* NormalInverseWishart_Group::default_instance_ = NULL;
-
-NormalInverseWishart_Group* NormalInverseWishart_Group::New() const {
-  return new NormalInverseWishart_Group;
-}
-
-void NormalInverseWishart_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    count_ = 0;
-  }
-  sum_x_.Clear();
-  sum_xxt_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseWishart_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required int32 count = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &count_)));
-          set_has_count();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_sum_x;
-        break;
-      }
-      
-      // repeated float sum_x = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_sum_x:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 21, input, this->mutable_sum_x())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_sum_x())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_sum_x;
-        if (input->ExpectTag(29)) goto parse_sum_xxT;
-        break;
-      }
-      
-      // repeated float sum_xxT = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_sum_xxT:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 29, input, this->mutable_sum_xxt())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_sum_xxt())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_sum_xxT;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseWishart_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required int32 count = 1;
-  if (has_count()) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->count(), output);
-  }
-  
-  // repeated float sum_x = 2;
-  for (int i = 0; i < this->sum_x_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      2, this->sum_x(i), output);
-  }
-  
-  // repeated float sum_xxT = 3;
-  for (int i = 0; i < this->sum_xxt_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      3, this->sum_xxt(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseWishart_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required int32 count = 1;
-  if (has_count()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->count(), target);
-  }
-  
-  // repeated float sum_x = 2;
-  for (int i = 0; i < this->sum_x_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(2, this->sum_x(i), target);
-  }
-  
-  // repeated float sum_xxT = 3;
-  for (int i = 0; i < this->sum_xxt_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(3, this->sum_xxt(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseWishart_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required int32 count = 1;
-    if (has_count()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-          this->count());
-    }
-    
-  }
-  // repeated float sum_x = 2;
-  {
-    int data_size = 0;
-    data_size = 4 * this->sum_x_size();
-    total_size += 1 * this->sum_x_size() + data_size;
-  }
-  
-  // repeated float sum_xxT = 3;
-  {
-    int data_size = 0;
-    data_size = 4 * this->sum_xxt_size();
-    total_size += 1 * this->sum_xxt_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseWishart_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseWishart_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseWishart_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseWishart_Group::MergeFrom(const NormalInverseWishart_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  sum_x_.MergeFrom(from.sum_x_);
-  sum_xxt_.MergeFrom(from.sum_xxt_);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_count()) {
-      set_count(from.count());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseWishart_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart_Group::CopyFrom(const NormalInverseWishart_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseWishart_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
-  
-  return true;
-}
-
-void NormalInverseWishart_Group::Swap(NormalInverseWishart_Group* other) {
-  if (other != this) {
-    std::swap(count_, other->count_);
-    sum_x_.Swap(&other->sum_x_);
-    sum_xxt_.Swap(&other->sum_xxt_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseWishart_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseWishart_Group_descriptor_;
-  metadata.reflection = NormalInverseWishart_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-NormalInverseWishart::NormalInverseWishart()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseWishart::InitAsDefaultInstance() {
-}
-
-NormalInverseWishart::NormalInverseWishart(const NormalInverseWishart& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseWishart::~NormalInverseWishart() {
-  SharedDtor();
-}
-
-void NormalInverseWishart::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseWishart::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseWishart::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseWishart_descriptor_;
-}
-
-const NormalInverseWishart& NormalInverseWishart::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseWishart* NormalInverseWishart::default_instance_ = NULL;
-
-NormalInverseWishart* NormalInverseWishart::New() const {
-  return new NormalInverseWishart;
-}
-
-void NormalInverseWishart::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseWishart::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseWishart::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseWishart::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseWishart::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseWishart::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseWishart* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseWishart*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseWishart::MergeFrom(const NormalInverseWishart& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseWishart::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart::CopyFrom(const NormalInverseWishart& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseWishart::IsInitialized() const {
-  
-  return true;
-}
-
-void NormalInverseWishart::Swap(NormalInverseWishart* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseWishart::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseWishart_descriptor_;
-  metadata.reflection = NormalInverseWishart_reflection_;
-  return metadata;
-}
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-}  // namespace distributions
-}  // namespace protobuf
-
-// @@protoc_insertion_point(global_scope)
diff --git a/include/distributions/io/schema.pb.h b/include/distributions/io/schema.pb.h
deleted file mode 100644
index afd1d2a..0000000
--- a/include/distributions/io/schema.pb.h
+++ /dev/null
@@ -1,3773 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: distributions/io/schema.proto
-
-#ifndef PROTOBUF_distributions_2fio_2fschema_2eproto__INCLUDED
-#define PROTOBUF_distributions_2fio_2fschema_2eproto__INCLUDED
-
-#include <string>
-
-#include <google/protobuf/stubs/common.h>
-
-#if GOOGLE_PROTOBUF_VERSION < 2004000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers.  Please update
-#error your headers.
-#endif
-#if 2004001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers.  Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/repeated_field.h>
-#include <google/protobuf/extension_set.h>
-#include <google/protobuf/generated_message_reflection.h>
-// @@protoc_insertion_point(includes)
-
-namespace protobuf {
-namespace distributions {
-
-// Internal implementation detail -- do not call these.
-void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-
-class Clustering;
-class Clustering_PitmanYor;
-class Clustering_LowEntropy;
-class BetaBernoulli;
-class BetaBernoulli_Shared;
-class BetaBernoulli_Group;
-class DirichletDiscrete;
-class DirichletDiscrete_Shared;
-class DirichletDiscrete_Group;
-class DirichletProcessDiscrete;
-class DirichletProcessDiscrete_Shared;
-class DirichletProcessDiscrete_Group;
-class PitmanYorProcessDiscrete;
-class PitmanYorProcessDiscrete_Shared;
-class PitmanYorProcessDiscrete_Group;
-class GammaPoisson;
-class GammaPoisson_Shared;
-class GammaPoisson_Group;
-class BetaNegativeBinomial;
-class BetaNegativeBinomial_Shared;
-class BetaNegativeBinomial_Group;
-class NormalInverseChiSq;
-class NormalInverseChiSq_Shared;
-class NormalInverseChiSq_Group;
-class NormalInverseWishart;
-class NormalInverseWishart_Shared;
-class NormalInverseWishart_Group;
-
-// ===================================================================
-
-class Clustering_PitmanYor : public ::google::protobuf::Message {
- public:
-  Clustering_PitmanYor();
-  virtual ~Clustering_PitmanYor();
-  
-  Clustering_PitmanYor(const Clustering_PitmanYor& from);
-  
-  inline Clustering_PitmanYor& operator=(const Clustering_PitmanYor& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const Clustering_PitmanYor& default_instance();
-  
-  void Swap(Clustering_PitmanYor* other);
-  
-  // implements Message ----------------------------------------------
-  
-  Clustering_PitmanYor* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const Clustering_PitmanYor& from);
-  void MergeFrom(const Clustering_PitmanYor& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required float alpha = 1;
-  inline bool has_alpha() const;
-  inline void clear_alpha();
-  static const int kAlphaFieldNumber = 1;
-  inline float alpha() const;
-  inline void set_alpha(float value);
-  
-  // required float d = 2;
-  inline bool has_d() const;
-  inline void clear_d();
-  static const int kDFieldNumber = 2;
-  inline float d() const;
-  inline void set_d(float value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.Clustering.PitmanYor)
- private:
-  inline void set_has_alpha();
-  inline void clear_has_alpha();
-  inline void set_has_d();
-  inline void clear_has_d();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  float alpha_;
-  float d_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static Clustering_PitmanYor* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class Clustering_LowEntropy : public ::google::protobuf::Message {
- public:
-  Clustering_LowEntropy();
-  virtual ~Clustering_LowEntropy();
-  
-  Clustering_LowEntropy(const Clustering_LowEntropy& from);
-  
-  inline Clustering_LowEntropy& operator=(const Clustering_LowEntropy& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const Clustering_LowEntropy& default_instance();
-  
-  void Swap(Clustering_LowEntropy* other);
-  
-  // implements Message ----------------------------------------------
-  
-  Clustering_LowEntropy* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const Clustering_LowEntropy& from);
-  void MergeFrom(const Clustering_LowEntropy& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required uint64 dataset_size = 1;
-  inline bool has_dataset_size() const;
-  inline void clear_dataset_size();
-  static const int kDatasetSizeFieldNumber = 1;
-  inline ::google::protobuf::uint64 dataset_size() const;
-  inline void set_dataset_size(::google::protobuf::uint64 value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.Clustering.LowEntropy)
- private:
-  inline void set_has_dataset_size();
-  inline void clear_has_dataset_size();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::uint64 dataset_size_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static Clustering_LowEntropy* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class Clustering : public ::google::protobuf::Message {
- public:
-  Clustering();
-  virtual ~Clustering();
-  
-  Clustering(const Clustering& from);
-  
-  inline Clustering& operator=(const Clustering& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const Clustering& default_instance();
-  
-  void Swap(Clustering* other);
-  
-  // implements Message ----------------------------------------------
-  
-  Clustering* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const Clustering& from);
-  void MergeFrom(const Clustering& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef Clustering_PitmanYor PitmanYor;
-  typedef Clustering_LowEntropy LowEntropy;
-  
-  // accessors -------------------------------------------------------
-  
-  // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-  inline bool has_pitman_yor() const;
-  inline void clear_pitman_yor();
-  static const int kPitmanYorFieldNumber = 1;
-  inline const ::protobuf::distributions::Clustering_PitmanYor& pitman_yor() const;
-  inline ::protobuf::distributions::Clustering_PitmanYor* mutable_pitman_yor();
-  inline ::protobuf::distributions::Clustering_PitmanYor* release_pitman_yor();
-  
-  // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-  inline bool has_low_entropy() const;
-  inline void clear_low_entropy();
-  static const int kLowEntropyFieldNumber = 2;
-  inline const ::protobuf::distributions::Clustering_LowEntropy& low_entropy() const;
-  inline ::protobuf::distributions::Clustering_LowEntropy* mutable_low_entropy();
-  inline ::protobuf::distributions::Clustering_LowEntropy* release_low_entropy();
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.Clustering)
- private:
-  inline void set_has_pitman_yor();
-  inline void clear_has_pitman_yor();
-  inline void set_has_low_entropy();
-  inline void clear_has_low_entropy();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::protobuf::distributions::Clustering_PitmanYor* pitman_yor_;
-  ::protobuf::distributions::Clustering_LowEntropy* low_entropy_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static Clustering* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class BetaBernoulli_Shared : public ::google::protobuf::Message {
- public:
-  BetaBernoulli_Shared();
-  virtual ~BetaBernoulli_Shared();
-  
-  BetaBernoulli_Shared(const BetaBernoulli_Shared& from);
-  
-  inline BetaBernoulli_Shared& operator=(const BetaBernoulli_Shared& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const BetaBernoulli_Shared& default_instance();
-  
-  void Swap(BetaBernoulli_Shared* other);
-  
-  // implements Message ----------------------------------------------
-  
-  BetaBernoulli_Shared* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const BetaBernoulli_Shared& from);
-  void MergeFrom(const BetaBernoulli_Shared& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required float alpha = 1;
-  inline bool has_alpha() const;
-  inline void clear_alpha();
-  static const int kAlphaFieldNumber = 1;
-  inline float alpha() const;
-  inline void set_alpha(float value);
-  
-  // required float beta = 2;
-  inline bool has_beta() const;
-  inline void clear_beta();
-  static const int kBetaFieldNumber = 2;
-  inline float beta() const;
-  inline void set_beta(float value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.BetaBernoulli.Shared)
- private:
-  inline void set_has_alpha();
-  inline void clear_has_alpha();
-  inline void set_has_beta();
-  inline void clear_has_beta();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  float alpha_;
-  float beta_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static BetaBernoulli_Shared* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class BetaBernoulli_Group : public ::google::protobuf::Message {
- public:
-  BetaBernoulli_Group();
-  virtual ~BetaBernoulli_Group();
-  
-  BetaBernoulli_Group(const BetaBernoulli_Group& from);
-  
-  inline BetaBernoulli_Group& operator=(const BetaBernoulli_Group& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const BetaBernoulli_Group& default_instance();
-  
-  void Swap(BetaBernoulli_Group* other);
-  
-  // implements Message ----------------------------------------------
-  
-  BetaBernoulli_Group* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const BetaBernoulli_Group& from);
-  void MergeFrom(const BetaBernoulli_Group& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required uint64 heads = 1;
-  inline bool has_heads() const;
-  inline void clear_heads();
-  static const int kHeadsFieldNumber = 1;
-  inline ::google::protobuf::uint64 heads() const;
-  inline void set_heads(::google::protobuf::uint64 value);
-  
-  // required uint64 tails = 2;
-  inline bool has_tails() const;
-  inline void clear_tails();
-  static const int kTailsFieldNumber = 2;
-  inline ::google::protobuf::uint64 tails() const;
-  inline void set_tails(::google::protobuf::uint64 value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.BetaBernoulli.Group)
- private:
-  inline void set_has_heads();
-  inline void clear_has_heads();
-  inline void set_has_tails();
-  inline void clear_has_tails();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::uint64 heads_;
-  ::google::protobuf::uint64 tails_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static BetaBernoulli_Group* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class BetaBernoulli : public ::google::protobuf::Message {
- public:
-  BetaBernoulli();
-  virtual ~BetaBernoulli();
-  
-  BetaBernoulli(const BetaBernoulli& from);
-  
-  inline BetaBernoulli& operator=(const BetaBernoulli& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const BetaBernoulli& default_instance();
-  
-  void Swap(BetaBernoulli* other);
-  
-  // implements Message ----------------------------------------------
-  
-  BetaBernoulli* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const BetaBernoulli& from);
-  void MergeFrom(const BetaBernoulli& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef BetaBernoulli_Shared Shared;
-  typedef BetaBernoulli_Group Group;
-  
-  // accessors -------------------------------------------------------
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.BetaBernoulli)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[1];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static BetaBernoulli* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class DirichletDiscrete_Shared : public ::google::protobuf::Message {
- public:
-  DirichletDiscrete_Shared();
-  virtual ~DirichletDiscrete_Shared();
-  
-  DirichletDiscrete_Shared(const DirichletDiscrete_Shared& from);
-  
-  inline DirichletDiscrete_Shared& operator=(const DirichletDiscrete_Shared& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const DirichletDiscrete_Shared& default_instance();
-  
-  void Swap(DirichletDiscrete_Shared* other);
-  
-  // implements Message ----------------------------------------------
-  
-  DirichletDiscrete_Shared* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const DirichletDiscrete_Shared& from);
-  void MergeFrom(const DirichletDiscrete_Shared& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // repeated float alphas = 1;
-  inline int alphas_size() const;
-  inline void clear_alphas();
-  static const int kAlphasFieldNumber = 1;
-  inline float alphas(int index) const;
-  inline void set_alphas(int index, float value);
-  inline void add_alphas(float value);
-  inline const ::google::protobuf::RepeatedField< float >&
-      alphas() const;
-  inline ::google::protobuf::RepeatedField< float >*
-      mutable_alphas();
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletDiscrete.Shared)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::RepeatedField< float > alphas_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static DirichletDiscrete_Shared* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class DirichletDiscrete_Group : public ::google::protobuf::Message {
- public:
-  DirichletDiscrete_Group();
-  virtual ~DirichletDiscrete_Group();
-  
-  DirichletDiscrete_Group(const DirichletDiscrete_Group& from);
-  
-  inline DirichletDiscrete_Group& operator=(const DirichletDiscrete_Group& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const DirichletDiscrete_Group& default_instance();
-  
-  void Swap(DirichletDiscrete_Group* other);
-  
-  // implements Message ----------------------------------------------
-  
-  DirichletDiscrete_Group* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const DirichletDiscrete_Group& from);
-  void MergeFrom(const DirichletDiscrete_Group& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // repeated uint64 counts = 1;
-  inline int counts_size() const;
-  inline void clear_counts();
-  static const int kCountsFieldNumber = 1;
-  inline ::google::protobuf::uint64 counts(int index) const;
-  inline void set_counts(int index, ::google::protobuf::uint64 value);
-  inline void add_counts(::google::protobuf::uint64 value);
-  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-      counts() const;
-  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-      mutable_counts();
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletDiscrete.Group)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 > counts_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static DirichletDiscrete_Group* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class DirichletDiscrete : public ::google::protobuf::Message {
- public:
-  DirichletDiscrete();
-  virtual ~DirichletDiscrete();
-  
-  DirichletDiscrete(const DirichletDiscrete& from);
-  
-  inline DirichletDiscrete& operator=(const DirichletDiscrete& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const DirichletDiscrete& default_instance();
-  
-  void Swap(DirichletDiscrete* other);
-  
-  // implements Message ----------------------------------------------
-  
-  DirichletDiscrete* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const DirichletDiscrete& from);
-  void MergeFrom(const DirichletDiscrete& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef DirichletDiscrete_Shared Shared;
-  typedef DirichletDiscrete_Group Group;
-  
-  // accessors -------------------------------------------------------
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletDiscrete)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[1];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static DirichletDiscrete* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class DirichletProcessDiscrete_Shared : public ::google::protobuf::Message {
- public:
-  DirichletProcessDiscrete_Shared();
-  virtual ~DirichletProcessDiscrete_Shared();
-  
-  DirichletProcessDiscrete_Shared(const DirichletProcessDiscrete_Shared& from);
-  
-  inline DirichletProcessDiscrete_Shared& operator=(const DirichletProcessDiscrete_Shared& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const DirichletProcessDiscrete_Shared& default_instance();
-  
-  void Swap(DirichletProcessDiscrete_Shared* other);
-  
-  // implements Message ----------------------------------------------
-  
-  DirichletProcessDiscrete_Shared* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const DirichletProcessDiscrete_Shared& from);
-  void MergeFrom(const DirichletProcessDiscrete_Shared& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required float gamma = 1;
-  inline bool has_gamma() const;
-  inline void clear_gamma();
-  static const int kGammaFieldNumber = 1;
-  inline float gamma() const;
-  inline void set_gamma(float value);
-  
-  // required float alpha = 2;
-  inline bool has_alpha() const;
-  inline void clear_alpha();
-  static const int kAlphaFieldNumber = 2;
-  inline float alpha() const;
-  inline void set_alpha(float value);
-  
-  // repeated uint32 values = 3;
-  inline int values_size() const;
-  inline void clear_values();
-  static const int kValuesFieldNumber = 3;
-  inline ::google::protobuf::uint32 values(int index) const;
-  inline void set_values(int index, ::google::protobuf::uint32 value);
-  inline void add_values(::google::protobuf::uint32 value);
-  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-      values() const;
-  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-      mutable_values();
-  
-  // repeated float betas = 4;
-  inline int betas_size() const;
-  inline void clear_betas();
-  static const int kBetasFieldNumber = 4;
-  inline float betas(int index) const;
-  inline void set_betas(int index, float value);
-  inline void add_betas(float value);
-  inline const ::google::protobuf::RepeatedField< float >&
-      betas() const;
-  inline ::google::protobuf::RepeatedField< float >*
-      mutable_betas();
-  
-  // repeated uint64 counts = 5;
-  inline int counts_size() const;
-  inline void clear_counts();
-  static const int kCountsFieldNumber = 5;
-  inline ::google::protobuf::uint64 counts(int index) const;
-  inline void set_counts(int index, ::google::protobuf::uint64 value);
-  inline void add_counts(::google::protobuf::uint64 value);
-  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-      counts() const;
-  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-      mutable_counts();
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletProcessDiscrete.Shared)
- private:
-  inline void set_has_gamma();
-  inline void clear_has_gamma();
-  inline void set_has_alpha();
-  inline void clear_has_alpha();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  float gamma_;
-  float alpha_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > values_;
-  ::google::protobuf::RepeatedField< float > betas_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 > counts_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static DirichletProcessDiscrete_Shared* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class DirichletProcessDiscrete_Group : public ::google::protobuf::Message {
- public:
-  DirichletProcessDiscrete_Group();
-  virtual ~DirichletProcessDiscrete_Group();
-  
-  DirichletProcessDiscrete_Group(const DirichletProcessDiscrete_Group& from);
-  
-  inline DirichletProcessDiscrete_Group& operator=(const DirichletProcessDiscrete_Group& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const DirichletProcessDiscrete_Group& default_instance();
-  
-  void Swap(DirichletProcessDiscrete_Group* other);
-  
-  // implements Message ----------------------------------------------
-  
-  DirichletProcessDiscrete_Group* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const DirichletProcessDiscrete_Group& from);
-  void MergeFrom(const DirichletProcessDiscrete_Group& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // repeated uint32 keys = 1;
-  inline int keys_size() const;
-  inline void clear_keys();
-  static const int kKeysFieldNumber = 1;
-  inline ::google::protobuf::uint32 keys(int index) const;
-  inline void set_keys(int index, ::google::protobuf::uint32 value);
-  inline void add_keys(::google::protobuf::uint32 value);
-  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-      keys() const;
-  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-      mutable_keys();
-  
-  // repeated uint64 values = 2;
-  inline int values_size() const;
-  inline void clear_values();
-  static const int kValuesFieldNumber = 2;
-  inline ::google::protobuf::uint64 values(int index) const;
-  inline void set_values(int index, ::google::protobuf::uint64 value);
-  inline void add_values(::google::protobuf::uint64 value);
-  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-      values() const;
-  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-      mutable_values();
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletProcessDiscrete.Group)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > keys_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 > values_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static DirichletProcessDiscrete_Group* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class DirichletProcessDiscrete : public ::google::protobuf::Message {
- public:
-  DirichletProcessDiscrete();
-  virtual ~DirichletProcessDiscrete();
-  
-  DirichletProcessDiscrete(const DirichletProcessDiscrete& from);
-  
-  inline DirichletProcessDiscrete& operator=(const DirichletProcessDiscrete& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const DirichletProcessDiscrete& default_instance();
-  
-  void Swap(DirichletProcessDiscrete* other);
-  
-  // implements Message ----------------------------------------------
-  
-  DirichletProcessDiscrete* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const DirichletProcessDiscrete& from);
-  void MergeFrom(const DirichletProcessDiscrete& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef DirichletProcessDiscrete_Shared Shared;
-  typedef DirichletProcessDiscrete_Group Group;
-  
-  // accessors -------------------------------------------------------
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.DirichletProcessDiscrete)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[1];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static DirichletProcessDiscrete* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class PitmanYorProcessDiscrete_Shared : public ::google::protobuf::Message {
- public:
-  PitmanYorProcessDiscrete_Shared();
-  virtual ~PitmanYorProcessDiscrete_Shared();
-  
-  PitmanYorProcessDiscrete_Shared(const PitmanYorProcessDiscrete_Shared& from);
-  
-  inline PitmanYorProcessDiscrete_Shared& operator=(const PitmanYorProcessDiscrete_Shared& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const PitmanYorProcessDiscrete_Shared& default_instance();
-  
-  void Swap(PitmanYorProcessDiscrete_Shared* other);
-  
-  // implements Message ----------------------------------------------
-  
-  PitmanYorProcessDiscrete_Shared* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const PitmanYorProcessDiscrete_Shared& from);
-  void MergeFrom(const PitmanYorProcessDiscrete_Shared& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required float alpha = 1;
-  inline bool has_alpha() const;
-  inline void clear_alpha();
-  static const int kAlphaFieldNumber = 1;
-  inline float alpha() const;
-  inline void set_alpha(float value);
-  
-  // repeated float d = 2;
-  inline int d_size() const;
-  inline void clear_d();
-  static const int kDFieldNumber = 2;
-  inline float d(int index) const;
-  inline void set_d(int index, float value);
-  inline void add_d(float value);
-  inline const ::google::protobuf::RepeatedField< float >&
-      d() const;
-  inline ::google::protobuf::RepeatedField< float >*
-      mutable_d();
-  
-  // repeated uint64 counts = 3;
-  inline int counts_size() const;
-  inline void clear_counts();
-  static const int kCountsFieldNumber = 3;
-  inline ::google::protobuf::uint64 counts(int index) const;
-  inline void set_counts(int index, ::google::protobuf::uint64 value);
-  inline void add_counts(::google::protobuf::uint64 value);
-  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-      counts() const;
-  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-      mutable_counts();
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.PitmanYorProcessDiscrete.Shared)
- private:
-  inline void set_has_alpha();
-  inline void clear_has_alpha();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::RepeatedField< float > d_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 > counts_;
-  float alpha_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static PitmanYorProcessDiscrete_Shared* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class PitmanYorProcessDiscrete_Group : public ::google::protobuf::Message {
- public:
-  PitmanYorProcessDiscrete_Group();
-  virtual ~PitmanYorProcessDiscrete_Group();
-  
-  PitmanYorProcessDiscrete_Group(const PitmanYorProcessDiscrete_Group& from);
-  
-  inline PitmanYorProcessDiscrete_Group& operator=(const PitmanYorProcessDiscrete_Group& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const PitmanYorProcessDiscrete_Group& default_instance();
-  
-  void Swap(PitmanYorProcessDiscrete_Group* other);
-  
-  // implements Message ----------------------------------------------
-  
-  PitmanYorProcessDiscrete_Group* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const PitmanYorProcessDiscrete_Group& from);
-  void MergeFrom(const PitmanYorProcessDiscrete_Group& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // repeated uint32 keys = 1;
-  inline int keys_size() const;
-  inline void clear_keys();
-  static const int kKeysFieldNumber = 1;
-  inline ::google::protobuf::uint32 keys(int index) const;
-  inline void set_keys(int index, ::google::protobuf::uint32 value);
-  inline void add_keys(::google::protobuf::uint32 value);
-  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-      keys() const;
-  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-      mutable_keys();
-  
-  // repeated uint64 values = 2;
-  inline int values_size() const;
-  inline void clear_values();
-  static const int kValuesFieldNumber = 2;
-  inline ::google::protobuf::uint64 values(int index) const;
-  inline void set_values(int index, ::google::protobuf::uint64 value);
-  inline void add_values(::google::protobuf::uint64 value);
-  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-      values() const;
-  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-      mutable_values();
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.PitmanYorProcessDiscrete.Group)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > keys_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 > values_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static PitmanYorProcessDiscrete_Group* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class PitmanYorProcessDiscrete : public ::google::protobuf::Message {
- public:
-  PitmanYorProcessDiscrete();
-  virtual ~PitmanYorProcessDiscrete();
-  
-  PitmanYorProcessDiscrete(const PitmanYorProcessDiscrete& from);
-  
-  inline PitmanYorProcessDiscrete& operator=(const PitmanYorProcessDiscrete& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const PitmanYorProcessDiscrete& default_instance();
-  
-  void Swap(PitmanYorProcessDiscrete* other);
-  
-  // implements Message ----------------------------------------------
-  
-  PitmanYorProcessDiscrete* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const PitmanYorProcessDiscrete& from);
-  void MergeFrom(const PitmanYorProcessDiscrete& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef PitmanYorProcessDiscrete_Shared Shared;
-  typedef PitmanYorProcessDiscrete_Group Group;
-  
-  // accessors -------------------------------------------------------
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.PitmanYorProcessDiscrete)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[1];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static PitmanYorProcessDiscrete* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class GammaPoisson_Shared : public ::google::protobuf::Message {
- public:
-  GammaPoisson_Shared();
-  virtual ~GammaPoisson_Shared();
-  
-  GammaPoisson_Shared(const GammaPoisson_Shared& from);
-  
-  inline GammaPoisson_Shared& operator=(const GammaPoisson_Shared& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const GammaPoisson_Shared& default_instance();
-  
-  void Swap(GammaPoisson_Shared* other);
-  
-  // implements Message ----------------------------------------------
-  
-  GammaPoisson_Shared* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const GammaPoisson_Shared& from);
-  void MergeFrom(const GammaPoisson_Shared& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required float alpha = 1;
-  inline bool has_alpha() const;
-  inline void clear_alpha();
-  static const int kAlphaFieldNumber = 1;
-  inline float alpha() const;
-  inline void set_alpha(float value);
-  
-  // required float inv_beta = 2;
-  inline bool has_inv_beta() const;
-  inline void clear_inv_beta();
-  static const int kInvBetaFieldNumber = 2;
-  inline float inv_beta() const;
-  inline void set_inv_beta(float value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.GammaPoisson.Shared)
- private:
-  inline void set_has_alpha();
-  inline void clear_has_alpha();
-  inline void set_has_inv_beta();
-  inline void clear_has_inv_beta();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  float alpha_;
-  float inv_beta_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static GammaPoisson_Shared* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class GammaPoisson_Group : public ::google::protobuf::Message {
- public:
-  GammaPoisson_Group();
-  virtual ~GammaPoisson_Group();
-  
-  GammaPoisson_Group(const GammaPoisson_Group& from);
-  
-  inline GammaPoisson_Group& operator=(const GammaPoisson_Group& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const GammaPoisson_Group& default_instance();
-  
-  void Swap(GammaPoisson_Group* other);
-  
-  // implements Message ----------------------------------------------
-  
-  GammaPoisson_Group* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const GammaPoisson_Group& from);
-  void MergeFrom(const GammaPoisson_Group& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required uint64 count = 1;
-  inline bool has_count() const;
-  inline void clear_count();
-  static const int kCountFieldNumber = 1;
-  inline ::google::protobuf::uint64 count() const;
-  inline void set_count(::google::protobuf::uint64 value);
-  
-  // required uint64 sum = 2;
-  inline bool has_sum() const;
-  inline void clear_sum();
-  static const int kSumFieldNumber = 2;
-  inline ::google::protobuf::uint64 sum() const;
-  inline void set_sum(::google::protobuf::uint64 value);
-  
-  // required float log_prod = 3;
-  inline bool has_log_prod() const;
-  inline void clear_log_prod();
-  static const int kLogProdFieldNumber = 3;
-  inline float log_prod() const;
-  inline void set_log_prod(float value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.GammaPoisson.Group)
- private:
-  inline void set_has_count();
-  inline void clear_has_count();
-  inline void set_has_sum();
-  inline void clear_has_sum();
-  inline void set_has_log_prod();
-  inline void clear_has_log_prod();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::uint64 count_;
-  ::google::protobuf::uint64 sum_;
-  float log_prod_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static GammaPoisson_Group* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class GammaPoisson : public ::google::protobuf::Message {
- public:
-  GammaPoisson();
-  virtual ~GammaPoisson();
-  
-  GammaPoisson(const GammaPoisson& from);
-  
-  inline GammaPoisson& operator=(const GammaPoisson& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const GammaPoisson& default_instance();
-  
-  void Swap(GammaPoisson* other);
-  
-  // implements Message ----------------------------------------------
-  
-  GammaPoisson* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const GammaPoisson& from);
-  void MergeFrom(const GammaPoisson& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef GammaPoisson_Shared Shared;
-  typedef GammaPoisson_Group Group;
-  
-  // accessors -------------------------------------------------------
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.GammaPoisson)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[1];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static GammaPoisson* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class BetaNegativeBinomial_Shared : public ::google::protobuf::Message {
- public:
-  BetaNegativeBinomial_Shared();
-  virtual ~BetaNegativeBinomial_Shared();
-  
-  BetaNegativeBinomial_Shared(const BetaNegativeBinomial_Shared& from);
-  
-  inline BetaNegativeBinomial_Shared& operator=(const BetaNegativeBinomial_Shared& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const BetaNegativeBinomial_Shared& default_instance();
-  
-  void Swap(BetaNegativeBinomial_Shared* other);
-  
-  // implements Message ----------------------------------------------
-  
-  BetaNegativeBinomial_Shared* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const BetaNegativeBinomial_Shared& from);
-  void MergeFrom(const BetaNegativeBinomial_Shared& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required float alpha = 1;
-  inline bool has_alpha() const;
-  inline void clear_alpha();
-  static const int kAlphaFieldNumber = 1;
-  inline float alpha() const;
-  inline void set_alpha(float value);
-  
-  // required float beta = 2;
-  inline bool has_beta() const;
-  inline void clear_beta();
-  static const int kBetaFieldNumber = 2;
-  inline float beta() const;
-  inline void set_beta(float value);
-  
-  // required uint64 r = 3;
-  inline bool has_r() const;
-  inline void clear_r();
-  static const int kRFieldNumber = 3;
-  inline ::google::protobuf::uint64 r() const;
-  inline void set_r(::google::protobuf::uint64 value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.BetaNegativeBinomial.Shared)
- private:
-  inline void set_has_alpha();
-  inline void clear_has_alpha();
-  inline void set_has_beta();
-  inline void clear_has_beta();
-  inline void set_has_r();
-  inline void clear_has_r();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  float alpha_;
-  float beta_;
-  ::google::protobuf::uint64 r_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static BetaNegativeBinomial_Shared* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class BetaNegativeBinomial_Group : public ::google::protobuf::Message {
- public:
-  BetaNegativeBinomial_Group();
-  virtual ~BetaNegativeBinomial_Group();
-  
-  BetaNegativeBinomial_Group(const BetaNegativeBinomial_Group& from);
-  
-  inline BetaNegativeBinomial_Group& operator=(const BetaNegativeBinomial_Group& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const BetaNegativeBinomial_Group& default_instance();
-  
-  void Swap(BetaNegativeBinomial_Group* other);
-  
-  // implements Message ----------------------------------------------
-  
-  BetaNegativeBinomial_Group* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const BetaNegativeBinomial_Group& from);
-  void MergeFrom(const BetaNegativeBinomial_Group& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required uint64 count = 1;
-  inline bool has_count() const;
-  inline void clear_count();
-  static const int kCountFieldNumber = 1;
-  inline ::google::protobuf::uint64 count() const;
-  inline void set_count(::google::protobuf::uint64 value);
-  
-  // required uint64 sum = 2;
-  inline bool has_sum() const;
-  inline void clear_sum();
-  static const int kSumFieldNumber = 2;
-  inline ::google::protobuf::uint64 sum() const;
-  inline void set_sum(::google::protobuf::uint64 value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.BetaNegativeBinomial.Group)
- private:
-  inline void set_has_count();
-  inline void clear_has_count();
-  inline void set_has_sum();
-  inline void clear_has_sum();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::uint64 count_;
-  ::google::protobuf::uint64 sum_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static BetaNegativeBinomial_Group* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class BetaNegativeBinomial : public ::google::protobuf::Message {
- public:
-  BetaNegativeBinomial();
-  virtual ~BetaNegativeBinomial();
-  
-  BetaNegativeBinomial(const BetaNegativeBinomial& from);
-  
-  inline BetaNegativeBinomial& operator=(const BetaNegativeBinomial& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const BetaNegativeBinomial& default_instance();
-  
-  void Swap(BetaNegativeBinomial* other);
-  
-  // implements Message ----------------------------------------------
-  
-  BetaNegativeBinomial* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const BetaNegativeBinomial& from);
-  void MergeFrom(const BetaNegativeBinomial& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef BetaNegativeBinomial_Shared Shared;
-  typedef BetaNegativeBinomial_Group Group;
-  
-  // accessors -------------------------------------------------------
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.BetaNegativeBinomial)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[1];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static BetaNegativeBinomial* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class NormalInverseChiSq_Shared : public ::google::protobuf::Message {
- public:
-  NormalInverseChiSq_Shared();
-  virtual ~NormalInverseChiSq_Shared();
-  
-  NormalInverseChiSq_Shared(const NormalInverseChiSq_Shared& from);
-  
-  inline NormalInverseChiSq_Shared& operator=(const NormalInverseChiSq_Shared& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const NormalInverseChiSq_Shared& default_instance();
-  
-  void Swap(NormalInverseChiSq_Shared* other);
-  
-  // implements Message ----------------------------------------------
-  
-  NormalInverseChiSq_Shared* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const NormalInverseChiSq_Shared& from);
-  void MergeFrom(const NormalInverseChiSq_Shared& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required float mu = 1;
-  inline bool has_mu() const;
-  inline void clear_mu();
-  static const int kMuFieldNumber = 1;
-  inline float mu() const;
-  inline void set_mu(float value);
-  
-  // required float kappa = 2;
-  inline bool has_kappa() const;
-  inline void clear_kappa();
-  static const int kKappaFieldNumber = 2;
-  inline float kappa() const;
-  inline void set_kappa(float value);
-  
-  // required float sigmasq = 3;
-  inline bool has_sigmasq() const;
-  inline void clear_sigmasq();
-  static const int kSigmasqFieldNumber = 3;
-  inline float sigmasq() const;
-  inline void set_sigmasq(float value);
-  
-  // required float nu = 4;
-  inline bool has_nu() const;
-  inline void clear_nu();
-  static const int kNuFieldNumber = 4;
-  inline float nu() const;
-  inline void set_nu(float value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseChiSq.Shared)
- private:
-  inline void set_has_mu();
-  inline void clear_has_mu();
-  inline void set_has_kappa();
-  inline void clear_has_kappa();
-  inline void set_has_sigmasq();
-  inline void clear_has_sigmasq();
-  inline void set_has_nu();
-  inline void clear_has_nu();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  float mu_;
-  float kappa_;
-  float sigmasq_;
-  float nu_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static NormalInverseChiSq_Shared* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class NormalInverseChiSq_Group : public ::google::protobuf::Message {
- public:
-  NormalInverseChiSq_Group();
-  virtual ~NormalInverseChiSq_Group();
-  
-  NormalInverseChiSq_Group(const NormalInverseChiSq_Group& from);
-  
-  inline NormalInverseChiSq_Group& operator=(const NormalInverseChiSq_Group& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const NormalInverseChiSq_Group& default_instance();
-  
-  void Swap(NormalInverseChiSq_Group* other);
-  
-  // implements Message ----------------------------------------------
-  
-  NormalInverseChiSq_Group* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const NormalInverseChiSq_Group& from);
-  void MergeFrom(const NormalInverseChiSq_Group& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required uint64 count = 1;
-  inline bool has_count() const;
-  inline void clear_count();
-  static const int kCountFieldNumber = 1;
-  inline ::google::protobuf::uint64 count() const;
-  inline void set_count(::google::protobuf::uint64 value);
-  
-  // required float mean = 2;
-  inline bool has_mean() const;
-  inline void clear_mean();
-  static const int kMeanFieldNumber = 2;
-  inline float mean() const;
-  inline void set_mean(float value);
-  
-  // required float count_times_variance = 3;
-  inline bool has_count_times_variance() const;
-  inline void clear_count_times_variance();
-  static const int kCountTimesVarianceFieldNumber = 3;
-  inline float count_times_variance() const;
-  inline void set_count_times_variance(float value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseChiSq.Group)
- private:
-  inline void set_has_count();
-  inline void clear_has_count();
-  inline void set_has_mean();
-  inline void clear_has_mean();
-  inline void set_has_count_times_variance();
-  inline void clear_has_count_times_variance();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::uint64 count_;
-  float mean_;
-  float count_times_variance_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static NormalInverseChiSq_Group* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class NormalInverseChiSq : public ::google::protobuf::Message {
- public:
-  NormalInverseChiSq();
-  virtual ~NormalInverseChiSq();
-  
-  NormalInverseChiSq(const NormalInverseChiSq& from);
-  
-  inline NormalInverseChiSq& operator=(const NormalInverseChiSq& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const NormalInverseChiSq& default_instance();
-  
-  void Swap(NormalInverseChiSq* other);
-  
-  // implements Message ----------------------------------------------
-  
-  NormalInverseChiSq* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const NormalInverseChiSq& from);
-  void MergeFrom(const NormalInverseChiSq& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef NormalInverseChiSq_Shared Shared;
-  typedef NormalInverseChiSq_Group Group;
-  
-  // accessors -------------------------------------------------------
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseChiSq)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[1];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static NormalInverseChiSq* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class NormalInverseWishart_Shared : public ::google::protobuf::Message {
- public:
-  NormalInverseWishart_Shared();
-  virtual ~NormalInverseWishart_Shared();
-  
-  NormalInverseWishart_Shared(const NormalInverseWishart_Shared& from);
-  
-  inline NormalInverseWishart_Shared& operator=(const NormalInverseWishart_Shared& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const NormalInverseWishart_Shared& default_instance();
-  
-  void Swap(NormalInverseWishart_Shared* other);
-  
-  // implements Message ----------------------------------------------
-  
-  NormalInverseWishart_Shared* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const NormalInverseWishart_Shared& from);
-  void MergeFrom(const NormalInverseWishart_Shared& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // repeated float mu = 1;
-  inline int mu_size() const;
-  inline void clear_mu();
-  static const int kMuFieldNumber = 1;
-  inline float mu(int index) const;
-  inline void set_mu(int index, float value);
-  inline void add_mu(float value);
-  inline const ::google::protobuf::RepeatedField< float >&
-      mu() const;
-  inline ::google::protobuf::RepeatedField< float >*
-      mutable_mu();
-  
-  // required float kappa = 2;
-  inline bool has_kappa() const;
-  inline void clear_kappa();
-  static const int kKappaFieldNumber = 2;
-  inline float kappa() const;
-  inline void set_kappa(float value);
-  
-  // repeated float psi = 3;
-  inline int psi_size() const;
-  inline void clear_psi();
-  static const int kPsiFieldNumber = 3;
-  inline float psi(int index) const;
-  inline void set_psi(int index, float value);
-  inline void add_psi(float value);
-  inline const ::google::protobuf::RepeatedField< float >&
-      psi() const;
-  inline ::google::protobuf::RepeatedField< float >*
-      mutable_psi();
-  
-  // required float nu = 4;
-  inline bool has_nu() const;
-  inline void clear_nu();
-  static const int kNuFieldNumber = 4;
-  inline float nu() const;
-  inline void set_nu(float value);
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseWishart.Shared)
- private:
-  inline void set_has_kappa();
-  inline void clear_has_kappa();
-  inline void set_has_nu();
-  inline void clear_has_nu();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::RepeatedField< float > mu_;
-  ::google::protobuf::RepeatedField< float > psi_;
-  float kappa_;
-  float nu_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static NormalInverseWishart_Shared* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class NormalInverseWishart_Group : public ::google::protobuf::Message {
- public:
-  NormalInverseWishart_Group();
-  virtual ~NormalInverseWishart_Group();
-  
-  NormalInverseWishart_Group(const NormalInverseWishart_Group& from);
-  
-  inline NormalInverseWishart_Group& operator=(const NormalInverseWishart_Group& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const NormalInverseWishart_Group& default_instance();
-  
-  void Swap(NormalInverseWishart_Group* other);
-  
-  // implements Message ----------------------------------------------
-  
-  NormalInverseWishart_Group* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const NormalInverseWishart_Group& from);
-  void MergeFrom(const NormalInverseWishart_Group& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  // accessors -------------------------------------------------------
-  
-  // required int32 count = 1;
-  inline bool has_count() const;
-  inline void clear_count();
-  static const int kCountFieldNumber = 1;
-  inline ::google::protobuf::int32 count() const;
-  inline void set_count(::google::protobuf::int32 value);
-  
-  // repeated float sum_x = 2;
-  inline int sum_x_size() const;
-  inline void clear_sum_x();
-  static const int kSumXFieldNumber = 2;
-  inline float sum_x(int index) const;
-  inline void set_sum_x(int index, float value);
-  inline void add_sum_x(float value);
-  inline const ::google::protobuf::RepeatedField< float >&
-      sum_x() const;
-  inline ::google::protobuf::RepeatedField< float >*
-      mutable_sum_x();
-  
-  // repeated float sum_xxT = 3;
-  inline int sum_xxt_size() const;
-  inline void clear_sum_xxt();
-  static const int kSumXxTFieldNumber = 3;
-  inline float sum_xxt(int index) const;
-  inline void set_sum_xxt(int index, float value);
-  inline void add_sum_xxt(float value);
-  inline const ::google::protobuf::RepeatedField< float >&
-      sum_xxt() const;
-  inline ::google::protobuf::RepeatedField< float >*
-      mutable_sum_xxt();
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseWishart.Group)
- private:
-  inline void set_has_count();
-  inline void clear_has_count();
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  ::google::protobuf::RepeatedField< float > sum_x_;
-  ::google::protobuf::RepeatedField< float > sum_xxt_;
-  ::google::protobuf::int32 count_;
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static NormalInverseWishart_Group* default_instance_;
-};
-// -------------------------------------------------------------------
-
-class NormalInverseWishart : public ::google::protobuf::Message {
- public:
-  NormalInverseWishart();
-  virtual ~NormalInverseWishart();
-  
-  NormalInverseWishart(const NormalInverseWishart& from);
-  
-  inline NormalInverseWishart& operator=(const NormalInverseWishart& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
-    return _unknown_fields_;
-  }
-  
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
-    return &_unknown_fields_;
-  }
-  
-  static const ::google::protobuf::Descriptor* descriptor();
-  static const NormalInverseWishart& default_instance();
-  
-  void Swap(NormalInverseWishart* other);
-  
-  // implements Message ----------------------------------------------
-  
-  NormalInverseWishart* New() const;
-  void CopyFrom(const ::google::protobuf::Message& from);
-  void MergeFrom(const ::google::protobuf::Message& from);
-  void CopyFrom(const NormalInverseWishart& from);
-  void MergeFrom(const NormalInverseWishart& from);
-  void Clear();
-  bool IsInitialized() const;
-  
-  int ByteSize() const;
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input);
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const;
-  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
-  int GetCachedSize() const { return _cached_size_; }
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const;
-  public:
-  
-  ::google::protobuf::Metadata GetMetadata() const;
-  
-  // nested types ----------------------------------------------------
-  
-  typedef NormalInverseWishart_Shared Shared;
-  typedef NormalInverseWishart_Group Group;
-  
-  // accessors -------------------------------------------------------
-  
-  // @@protoc_insertion_point(class_scope:protobuf.distributions.NormalInverseWishart)
- private:
-  
-  ::google::protobuf::UnknownFieldSet _unknown_fields_;
-  
-  
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[1];
-  
-  friend void  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto();
-  friend void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto();
-  
-  void InitAsDefaultInstance();
-  static NormalInverseWishart* default_instance_;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-// Clustering_PitmanYor
-
-// required float alpha = 1;
-inline bool Clustering_PitmanYor::has_alpha() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void Clustering_PitmanYor::set_has_alpha() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void Clustering_PitmanYor::clear_has_alpha() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void Clustering_PitmanYor::clear_alpha() {
-  alpha_ = 0;
-  clear_has_alpha();
-}
-inline float Clustering_PitmanYor::alpha() const {
-  return alpha_;
-}
-inline void Clustering_PitmanYor::set_alpha(float value) {
-  set_has_alpha();
-  alpha_ = value;
-}
-
-// required float d = 2;
-inline bool Clustering_PitmanYor::has_d() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void Clustering_PitmanYor::set_has_d() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void Clustering_PitmanYor::clear_has_d() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void Clustering_PitmanYor::clear_d() {
-  d_ = 0;
-  clear_has_d();
-}
-inline float Clustering_PitmanYor::d() const {
-  return d_;
-}
-inline void Clustering_PitmanYor::set_d(float value) {
-  set_has_d();
-  d_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// Clustering_LowEntropy
-
-// required uint64 dataset_size = 1;
-inline bool Clustering_LowEntropy::has_dataset_size() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void Clustering_LowEntropy::set_has_dataset_size() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void Clustering_LowEntropy::clear_has_dataset_size() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void Clustering_LowEntropy::clear_dataset_size() {
-  dataset_size_ = GOOGLE_ULONGLONG(0);
-  clear_has_dataset_size();
-}
-inline ::google::protobuf::uint64 Clustering_LowEntropy::dataset_size() const {
-  return dataset_size_;
-}
-inline void Clustering_LowEntropy::set_dataset_size(::google::protobuf::uint64 value) {
-  set_has_dataset_size();
-  dataset_size_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// Clustering
-
-// optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-inline bool Clustering::has_pitman_yor() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void Clustering::set_has_pitman_yor() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void Clustering::clear_has_pitman_yor() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void Clustering::clear_pitman_yor() {
-  if (pitman_yor_ != NULL) pitman_yor_->::protobuf::distributions::Clustering_PitmanYor::Clear();
-  clear_has_pitman_yor();
-}
-inline const ::protobuf::distributions::Clustering_PitmanYor& Clustering::pitman_yor() const {
-  return pitman_yor_ != NULL ? *pitman_yor_ : *default_instance_->pitman_yor_;
-}
-inline ::protobuf::distributions::Clustering_PitmanYor* Clustering::mutable_pitman_yor() {
-  set_has_pitman_yor();
-  if (pitman_yor_ == NULL) pitman_yor_ = new ::protobuf::distributions::Clustering_PitmanYor;
-  return pitman_yor_;
-}
-inline ::protobuf::distributions::Clustering_PitmanYor* Clustering::release_pitman_yor() {
-  clear_has_pitman_yor();
-  ::protobuf::distributions::Clustering_PitmanYor* temp = pitman_yor_;
-  pitman_yor_ = NULL;
-  return temp;
-}
-
-// optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-inline bool Clustering::has_low_entropy() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void Clustering::set_has_low_entropy() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void Clustering::clear_has_low_entropy() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void Clustering::clear_low_entropy() {
-  if (low_entropy_ != NULL) low_entropy_->::protobuf::distributions::Clustering_LowEntropy::Clear();
-  clear_has_low_entropy();
-}
-inline const ::protobuf::distributions::Clustering_LowEntropy& Clustering::low_entropy() const {
-  return low_entropy_ != NULL ? *low_entropy_ : *default_instance_->low_entropy_;
-}
-inline ::protobuf::distributions::Clustering_LowEntropy* Clustering::mutable_low_entropy() {
-  set_has_low_entropy();
-  if (low_entropy_ == NULL) low_entropy_ = new ::protobuf::distributions::Clustering_LowEntropy;
-  return low_entropy_;
-}
-inline ::protobuf::distributions::Clustering_LowEntropy* Clustering::release_low_entropy() {
-  clear_has_low_entropy();
-  ::protobuf::distributions::Clustering_LowEntropy* temp = low_entropy_;
-  low_entropy_ = NULL;
-  return temp;
-}
-
-// -------------------------------------------------------------------
-
-// BetaBernoulli_Shared
-
-// required float alpha = 1;
-inline bool BetaBernoulli_Shared::has_alpha() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void BetaBernoulli_Shared::set_has_alpha() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void BetaBernoulli_Shared::clear_has_alpha() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void BetaBernoulli_Shared::clear_alpha() {
-  alpha_ = 0;
-  clear_has_alpha();
-}
-inline float BetaBernoulli_Shared::alpha() const {
-  return alpha_;
-}
-inline void BetaBernoulli_Shared::set_alpha(float value) {
-  set_has_alpha();
-  alpha_ = value;
-}
-
-// required float beta = 2;
-inline bool BetaBernoulli_Shared::has_beta() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void BetaBernoulli_Shared::set_has_beta() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void BetaBernoulli_Shared::clear_has_beta() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void BetaBernoulli_Shared::clear_beta() {
-  beta_ = 0;
-  clear_has_beta();
-}
-inline float BetaBernoulli_Shared::beta() const {
-  return beta_;
-}
-inline void BetaBernoulli_Shared::set_beta(float value) {
-  set_has_beta();
-  beta_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// BetaBernoulli_Group
-
-// required uint64 heads = 1;
-inline bool BetaBernoulli_Group::has_heads() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void BetaBernoulli_Group::set_has_heads() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void BetaBernoulli_Group::clear_has_heads() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void BetaBernoulli_Group::clear_heads() {
-  heads_ = GOOGLE_ULONGLONG(0);
-  clear_has_heads();
-}
-inline ::google::protobuf::uint64 BetaBernoulli_Group::heads() const {
-  return heads_;
-}
-inline void BetaBernoulli_Group::set_heads(::google::protobuf::uint64 value) {
-  set_has_heads();
-  heads_ = value;
-}
-
-// required uint64 tails = 2;
-inline bool BetaBernoulli_Group::has_tails() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void BetaBernoulli_Group::set_has_tails() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void BetaBernoulli_Group::clear_has_tails() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void BetaBernoulli_Group::clear_tails() {
-  tails_ = GOOGLE_ULONGLONG(0);
-  clear_has_tails();
-}
-inline ::google::protobuf::uint64 BetaBernoulli_Group::tails() const {
-  return tails_;
-}
-inline void BetaBernoulli_Group::set_tails(::google::protobuf::uint64 value) {
-  set_has_tails();
-  tails_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// BetaBernoulli
-
-// -------------------------------------------------------------------
-
-// DirichletDiscrete_Shared
-
-// repeated float alphas = 1;
-inline int DirichletDiscrete_Shared::alphas_size() const {
-  return alphas_.size();
-}
-inline void DirichletDiscrete_Shared::clear_alphas() {
-  alphas_.Clear();
-}
-inline float DirichletDiscrete_Shared::alphas(int index) const {
-  return alphas_.Get(index);
-}
-inline void DirichletDiscrete_Shared::set_alphas(int index, float value) {
-  alphas_.Set(index, value);
-}
-inline void DirichletDiscrete_Shared::add_alphas(float value) {
-  alphas_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< float >&
-DirichletDiscrete_Shared::alphas() const {
-  return alphas_;
-}
-inline ::google::protobuf::RepeatedField< float >*
-DirichletDiscrete_Shared::mutable_alphas() {
-  return &alphas_;
-}
-
-// -------------------------------------------------------------------
-
-// DirichletDiscrete_Group
-
-// repeated uint64 counts = 1;
-inline int DirichletDiscrete_Group::counts_size() const {
-  return counts_.size();
-}
-inline void DirichletDiscrete_Group::clear_counts() {
-  counts_.Clear();
-}
-inline ::google::protobuf::uint64 DirichletDiscrete_Group::counts(int index) const {
-  return counts_.Get(index);
-}
-inline void DirichletDiscrete_Group::set_counts(int index, ::google::protobuf::uint64 value) {
-  counts_.Set(index, value);
-}
-inline void DirichletDiscrete_Group::add_counts(::google::protobuf::uint64 value) {
-  counts_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-DirichletDiscrete_Group::counts() const {
-  return counts_;
-}
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-DirichletDiscrete_Group::mutable_counts() {
-  return &counts_;
-}
-
-// -------------------------------------------------------------------
-
-// DirichletDiscrete
-
-// -------------------------------------------------------------------
-
-// DirichletProcessDiscrete_Shared
-
-// required float gamma = 1;
-inline bool DirichletProcessDiscrete_Shared::has_gamma() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void DirichletProcessDiscrete_Shared::set_has_gamma() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void DirichletProcessDiscrete_Shared::clear_has_gamma() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void DirichletProcessDiscrete_Shared::clear_gamma() {
-  gamma_ = 0;
-  clear_has_gamma();
-}
-inline float DirichletProcessDiscrete_Shared::gamma() const {
-  return gamma_;
-}
-inline void DirichletProcessDiscrete_Shared::set_gamma(float value) {
-  set_has_gamma();
-  gamma_ = value;
-}
-
-// required float alpha = 2;
-inline bool DirichletProcessDiscrete_Shared::has_alpha() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void DirichletProcessDiscrete_Shared::set_has_alpha() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void DirichletProcessDiscrete_Shared::clear_has_alpha() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void DirichletProcessDiscrete_Shared::clear_alpha() {
-  alpha_ = 0;
-  clear_has_alpha();
-}
-inline float DirichletProcessDiscrete_Shared::alpha() const {
-  return alpha_;
-}
-inline void DirichletProcessDiscrete_Shared::set_alpha(float value) {
-  set_has_alpha();
-  alpha_ = value;
-}
-
-// repeated uint32 values = 3;
-inline int DirichletProcessDiscrete_Shared::values_size() const {
-  return values_.size();
-}
-inline void DirichletProcessDiscrete_Shared::clear_values() {
-  values_.Clear();
-}
-inline ::google::protobuf::uint32 DirichletProcessDiscrete_Shared::values(int index) const {
-  return values_.Get(index);
-}
-inline void DirichletProcessDiscrete_Shared::set_values(int index, ::google::protobuf::uint32 value) {
-  values_.Set(index, value);
-}
-inline void DirichletProcessDiscrete_Shared::add_values(::google::protobuf::uint32 value) {
-  values_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-DirichletProcessDiscrete_Shared::values() const {
-  return values_;
-}
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-DirichletProcessDiscrete_Shared::mutable_values() {
-  return &values_;
-}
-
-// repeated float betas = 4;
-inline int DirichletProcessDiscrete_Shared::betas_size() const {
-  return betas_.size();
-}
-inline void DirichletProcessDiscrete_Shared::clear_betas() {
-  betas_.Clear();
-}
-inline float DirichletProcessDiscrete_Shared::betas(int index) const {
-  return betas_.Get(index);
-}
-inline void DirichletProcessDiscrete_Shared::set_betas(int index, float value) {
-  betas_.Set(index, value);
-}
-inline void DirichletProcessDiscrete_Shared::add_betas(float value) {
-  betas_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< float >&
-DirichletProcessDiscrete_Shared::betas() const {
-  return betas_;
-}
-inline ::google::protobuf::RepeatedField< float >*
-DirichletProcessDiscrete_Shared::mutable_betas() {
-  return &betas_;
-}
-
-// repeated uint64 counts = 5;
-inline int DirichletProcessDiscrete_Shared::counts_size() const {
-  return counts_.size();
-}
-inline void DirichletProcessDiscrete_Shared::clear_counts() {
-  counts_.Clear();
-}
-inline ::google::protobuf::uint64 DirichletProcessDiscrete_Shared::counts(int index) const {
-  return counts_.Get(index);
-}
-inline void DirichletProcessDiscrete_Shared::set_counts(int index, ::google::protobuf::uint64 value) {
-  counts_.Set(index, value);
-}
-inline void DirichletProcessDiscrete_Shared::add_counts(::google::protobuf::uint64 value) {
-  counts_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-DirichletProcessDiscrete_Shared::counts() const {
-  return counts_;
-}
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-DirichletProcessDiscrete_Shared::mutable_counts() {
-  return &counts_;
-}
-
-// -------------------------------------------------------------------
-
-// DirichletProcessDiscrete_Group
-
-// repeated uint32 keys = 1;
-inline int DirichletProcessDiscrete_Group::keys_size() const {
-  return keys_.size();
-}
-inline void DirichletProcessDiscrete_Group::clear_keys() {
-  keys_.Clear();
-}
-inline ::google::protobuf::uint32 DirichletProcessDiscrete_Group::keys(int index) const {
-  return keys_.Get(index);
-}
-inline void DirichletProcessDiscrete_Group::set_keys(int index, ::google::protobuf::uint32 value) {
-  keys_.Set(index, value);
-}
-inline void DirichletProcessDiscrete_Group::add_keys(::google::protobuf::uint32 value) {
-  keys_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-DirichletProcessDiscrete_Group::keys() const {
-  return keys_;
-}
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-DirichletProcessDiscrete_Group::mutable_keys() {
-  return &keys_;
-}
-
-// repeated uint64 values = 2;
-inline int DirichletProcessDiscrete_Group::values_size() const {
-  return values_.size();
-}
-inline void DirichletProcessDiscrete_Group::clear_values() {
-  values_.Clear();
-}
-inline ::google::protobuf::uint64 DirichletProcessDiscrete_Group::values(int index) const {
-  return values_.Get(index);
-}
-inline void DirichletProcessDiscrete_Group::set_values(int index, ::google::protobuf::uint64 value) {
-  values_.Set(index, value);
-}
-inline void DirichletProcessDiscrete_Group::add_values(::google::protobuf::uint64 value) {
-  values_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-DirichletProcessDiscrete_Group::values() const {
-  return values_;
-}
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-DirichletProcessDiscrete_Group::mutable_values() {
-  return &values_;
-}
-
-// -------------------------------------------------------------------
-
-// DirichletProcessDiscrete
-
-// -------------------------------------------------------------------
-
-// PitmanYorProcessDiscrete_Shared
-
-// required float alpha = 1;
-inline bool PitmanYorProcessDiscrete_Shared::has_alpha() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void PitmanYorProcessDiscrete_Shared::set_has_alpha() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void PitmanYorProcessDiscrete_Shared::clear_has_alpha() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void PitmanYorProcessDiscrete_Shared::clear_alpha() {
-  alpha_ = 0;
-  clear_has_alpha();
-}
-inline float PitmanYorProcessDiscrete_Shared::alpha() const {
-  return alpha_;
-}
-inline void PitmanYorProcessDiscrete_Shared::set_alpha(float value) {
-  set_has_alpha();
-  alpha_ = value;
-}
-
-// repeated float d = 2;
-inline int PitmanYorProcessDiscrete_Shared::d_size() const {
-  return d_.size();
-}
-inline void PitmanYorProcessDiscrete_Shared::clear_d() {
-  d_.Clear();
-}
-inline float PitmanYorProcessDiscrete_Shared::d(int index) const {
-  return d_.Get(index);
-}
-inline void PitmanYorProcessDiscrete_Shared::set_d(int index, float value) {
-  d_.Set(index, value);
-}
-inline void PitmanYorProcessDiscrete_Shared::add_d(float value) {
-  d_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< float >&
-PitmanYorProcessDiscrete_Shared::d() const {
-  return d_;
-}
-inline ::google::protobuf::RepeatedField< float >*
-PitmanYorProcessDiscrete_Shared::mutable_d() {
-  return &d_;
-}
-
-// repeated uint64 counts = 3;
-inline int PitmanYorProcessDiscrete_Shared::counts_size() const {
-  return counts_.size();
-}
-inline void PitmanYorProcessDiscrete_Shared::clear_counts() {
-  counts_.Clear();
-}
-inline ::google::protobuf::uint64 PitmanYorProcessDiscrete_Shared::counts(int index) const {
-  return counts_.Get(index);
-}
-inline void PitmanYorProcessDiscrete_Shared::set_counts(int index, ::google::protobuf::uint64 value) {
-  counts_.Set(index, value);
-}
-inline void PitmanYorProcessDiscrete_Shared::add_counts(::google::protobuf::uint64 value) {
-  counts_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-PitmanYorProcessDiscrete_Shared::counts() const {
-  return counts_;
-}
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-PitmanYorProcessDiscrete_Shared::mutable_counts() {
-  return &counts_;
-}
-
-// -------------------------------------------------------------------
-
-// PitmanYorProcessDiscrete_Group
-
-// repeated uint32 keys = 1;
-inline int PitmanYorProcessDiscrete_Group::keys_size() const {
-  return keys_.size();
-}
-inline void PitmanYorProcessDiscrete_Group::clear_keys() {
-  keys_.Clear();
-}
-inline ::google::protobuf::uint32 PitmanYorProcessDiscrete_Group::keys(int index) const {
-  return keys_.Get(index);
-}
-inline void PitmanYorProcessDiscrete_Group::set_keys(int index, ::google::protobuf::uint32 value) {
-  keys_.Set(index, value);
-}
-inline void PitmanYorProcessDiscrete_Group::add_keys(::google::protobuf::uint32 value) {
-  keys_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-PitmanYorProcessDiscrete_Group::keys() const {
-  return keys_;
-}
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-PitmanYorProcessDiscrete_Group::mutable_keys() {
-  return &keys_;
-}
-
-// repeated uint64 values = 2;
-inline int PitmanYorProcessDiscrete_Group::values_size() const {
-  return values_.size();
-}
-inline void PitmanYorProcessDiscrete_Group::clear_values() {
-  values_.Clear();
-}
-inline ::google::protobuf::uint64 PitmanYorProcessDiscrete_Group::values(int index) const {
-  return values_.Get(index);
-}
-inline void PitmanYorProcessDiscrete_Group::set_values(int index, ::google::protobuf::uint64 value) {
-  values_.Set(index, value);
-}
-inline void PitmanYorProcessDiscrete_Group::add_values(::google::protobuf::uint64 value) {
-  values_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
-PitmanYorProcessDiscrete_Group::values() const {
-  return values_;
-}
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
-PitmanYorProcessDiscrete_Group::mutable_values() {
-  return &values_;
-}
-
-// -------------------------------------------------------------------
-
-// PitmanYorProcessDiscrete
-
-// -------------------------------------------------------------------
-
-// GammaPoisson_Shared
-
-// required float alpha = 1;
-inline bool GammaPoisson_Shared::has_alpha() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void GammaPoisson_Shared::set_has_alpha() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void GammaPoisson_Shared::clear_has_alpha() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void GammaPoisson_Shared::clear_alpha() {
-  alpha_ = 0;
-  clear_has_alpha();
-}
-inline float GammaPoisson_Shared::alpha() const {
-  return alpha_;
-}
-inline void GammaPoisson_Shared::set_alpha(float value) {
-  set_has_alpha();
-  alpha_ = value;
-}
-
-// required float inv_beta = 2;
-inline bool GammaPoisson_Shared::has_inv_beta() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void GammaPoisson_Shared::set_has_inv_beta() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void GammaPoisson_Shared::clear_has_inv_beta() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void GammaPoisson_Shared::clear_inv_beta() {
-  inv_beta_ = 0;
-  clear_has_inv_beta();
-}
-inline float GammaPoisson_Shared::inv_beta() const {
-  return inv_beta_;
-}
-inline void GammaPoisson_Shared::set_inv_beta(float value) {
-  set_has_inv_beta();
-  inv_beta_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// GammaPoisson_Group
-
-// required uint64 count = 1;
-inline bool GammaPoisson_Group::has_count() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void GammaPoisson_Group::set_has_count() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void GammaPoisson_Group::clear_has_count() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void GammaPoisson_Group::clear_count() {
-  count_ = GOOGLE_ULONGLONG(0);
-  clear_has_count();
-}
-inline ::google::protobuf::uint64 GammaPoisson_Group::count() const {
-  return count_;
-}
-inline void GammaPoisson_Group::set_count(::google::protobuf::uint64 value) {
-  set_has_count();
-  count_ = value;
-}
-
-// required uint64 sum = 2;
-inline bool GammaPoisson_Group::has_sum() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void GammaPoisson_Group::set_has_sum() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void GammaPoisson_Group::clear_has_sum() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void GammaPoisson_Group::clear_sum() {
-  sum_ = GOOGLE_ULONGLONG(0);
-  clear_has_sum();
-}
-inline ::google::protobuf::uint64 GammaPoisson_Group::sum() const {
-  return sum_;
-}
-inline void GammaPoisson_Group::set_sum(::google::protobuf::uint64 value) {
-  set_has_sum();
-  sum_ = value;
-}
-
-// required float log_prod = 3;
-inline bool GammaPoisson_Group::has_log_prod() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
-}
-inline void GammaPoisson_Group::set_has_log_prod() {
-  _has_bits_[0] |= 0x00000004u;
-}
-inline void GammaPoisson_Group::clear_has_log_prod() {
-  _has_bits_[0] &= ~0x00000004u;
-}
-inline void GammaPoisson_Group::clear_log_prod() {
-  log_prod_ = 0;
-  clear_has_log_prod();
-}
-inline float GammaPoisson_Group::log_prod() const {
-  return log_prod_;
-}
-inline void GammaPoisson_Group::set_log_prod(float value) {
-  set_has_log_prod();
-  log_prod_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// GammaPoisson
-
-// -------------------------------------------------------------------
-
-// BetaNegativeBinomial_Shared
-
-// required float alpha = 1;
-inline bool BetaNegativeBinomial_Shared::has_alpha() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void BetaNegativeBinomial_Shared::set_has_alpha() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void BetaNegativeBinomial_Shared::clear_has_alpha() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void BetaNegativeBinomial_Shared::clear_alpha() {
-  alpha_ = 0;
-  clear_has_alpha();
-}
-inline float BetaNegativeBinomial_Shared::alpha() const {
-  return alpha_;
-}
-inline void BetaNegativeBinomial_Shared::set_alpha(float value) {
-  set_has_alpha();
-  alpha_ = value;
-}
-
-// required float beta = 2;
-inline bool BetaNegativeBinomial_Shared::has_beta() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void BetaNegativeBinomial_Shared::set_has_beta() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void BetaNegativeBinomial_Shared::clear_has_beta() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void BetaNegativeBinomial_Shared::clear_beta() {
-  beta_ = 0;
-  clear_has_beta();
-}
-inline float BetaNegativeBinomial_Shared::beta() const {
-  return beta_;
-}
-inline void BetaNegativeBinomial_Shared::set_beta(float value) {
-  set_has_beta();
-  beta_ = value;
-}
-
-// required uint64 r = 3;
-inline bool BetaNegativeBinomial_Shared::has_r() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
-}
-inline void BetaNegativeBinomial_Shared::set_has_r() {
-  _has_bits_[0] |= 0x00000004u;
-}
-inline void BetaNegativeBinomial_Shared::clear_has_r() {
-  _has_bits_[0] &= ~0x00000004u;
-}
-inline void BetaNegativeBinomial_Shared::clear_r() {
-  r_ = GOOGLE_ULONGLONG(0);
-  clear_has_r();
-}
-inline ::google::protobuf::uint64 BetaNegativeBinomial_Shared::r() const {
-  return r_;
-}
-inline void BetaNegativeBinomial_Shared::set_r(::google::protobuf::uint64 value) {
-  set_has_r();
-  r_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// BetaNegativeBinomial_Group
-
-// required uint64 count = 1;
-inline bool BetaNegativeBinomial_Group::has_count() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void BetaNegativeBinomial_Group::set_has_count() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void BetaNegativeBinomial_Group::clear_has_count() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void BetaNegativeBinomial_Group::clear_count() {
-  count_ = GOOGLE_ULONGLONG(0);
-  clear_has_count();
-}
-inline ::google::protobuf::uint64 BetaNegativeBinomial_Group::count() const {
-  return count_;
-}
-inline void BetaNegativeBinomial_Group::set_count(::google::protobuf::uint64 value) {
-  set_has_count();
-  count_ = value;
-}
-
-// required uint64 sum = 2;
-inline bool BetaNegativeBinomial_Group::has_sum() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void BetaNegativeBinomial_Group::set_has_sum() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void BetaNegativeBinomial_Group::clear_has_sum() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void BetaNegativeBinomial_Group::clear_sum() {
-  sum_ = GOOGLE_ULONGLONG(0);
-  clear_has_sum();
-}
-inline ::google::protobuf::uint64 BetaNegativeBinomial_Group::sum() const {
-  return sum_;
-}
-inline void BetaNegativeBinomial_Group::set_sum(::google::protobuf::uint64 value) {
-  set_has_sum();
-  sum_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// BetaNegativeBinomial
-
-// -------------------------------------------------------------------
-
-// NormalInverseChiSq_Shared
-
-// required float mu = 1;
-inline bool NormalInverseChiSq_Shared::has_mu() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void NormalInverseChiSq_Shared::set_has_mu() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void NormalInverseChiSq_Shared::clear_has_mu() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void NormalInverseChiSq_Shared::clear_mu() {
-  mu_ = 0;
-  clear_has_mu();
-}
-inline float NormalInverseChiSq_Shared::mu() const {
-  return mu_;
-}
-inline void NormalInverseChiSq_Shared::set_mu(float value) {
-  set_has_mu();
-  mu_ = value;
-}
-
-// required float kappa = 2;
-inline bool NormalInverseChiSq_Shared::has_kappa() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void NormalInverseChiSq_Shared::set_has_kappa() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void NormalInverseChiSq_Shared::clear_has_kappa() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void NormalInverseChiSq_Shared::clear_kappa() {
-  kappa_ = 0;
-  clear_has_kappa();
-}
-inline float NormalInverseChiSq_Shared::kappa() const {
-  return kappa_;
-}
-inline void NormalInverseChiSq_Shared::set_kappa(float value) {
-  set_has_kappa();
-  kappa_ = value;
-}
-
-// required float sigmasq = 3;
-inline bool NormalInverseChiSq_Shared::has_sigmasq() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
-}
-inline void NormalInverseChiSq_Shared::set_has_sigmasq() {
-  _has_bits_[0] |= 0x00000004u;
-}
-inline void NormalInverseChiSq_Shared::clear_has_sigmasq() {
-  _has_bits_[0] &= ~0x00000004u;
-}
-inline void NormalInverseChiSq_Shared::clear_sigmasq() {
-  sigmasq_ = 0;
-  clear_has_sigmasq();
-}
-inline float NormalInverseChiSq_Shared::sigmasq() const {
-  return sigmasq_;
-}
-inline void NormalInverseChiSq_Shared::set_sigmasq(float value) {
-  set_has_sigmasq();
-  sigmasq_ = value;
-}
-
-// required float nu = 4;
-inline bool NormalInverseChiSq_Shared::has_nu() const {
-  return (_has_bits_[0] & 0x00000008u) != 0;
-}
-inline void NormalInverseChiSq_Shared::set_has_nu() {
-  _has_bits_[0] |= 0x00000008u;
-}
-inline void NormalInverseChiSq_Shared::clear_has_nu() {
-  _has_bits_[0] &= ~0x00000008u;
-}
-inline void NormalInverseChiSq_Shared::clear_nu() {
-  nu_ = 0;
-  clear_has_nu();
-}
-inline float NormalInverseChiSq_Shared::nu() const {
-  return nu_;
-}
-inline void NormalInverseChiSq_Shared::set_nu(float value) {
-  set_has_nu();
-  nu_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// NormalInverseChiSq_Group
-
-// required uint64 count = 1;
-inline bool NormalInverseChiSq_Group::has_count() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void NormalInverseChiSq_Group::set_has_count() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void NormalInverseChiSq_Group::clear_has_count() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void NormalInverseChiSq_Group::clear_count() {
-  count_ = GOOGLE_ULONGLONG(0);
-  clear_has_count();
-}
-inline ::google::protobuf::uint64 NormalInverseChiSq_Group::count() const {
-  return count_;
-}
-inline void NormalInverseChiSq_Group::set_count(::google::protobuf::uint64 value) {
-  set_has_count();
-  count_ = value;
-}
-
-// required float mean = 2;
-inline bool NormalInverseChiSq_Group::has_mean() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void NormalInverseChiSq_Group::set_has_mean() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void NormalInverseChiSq_Group::clear_has_mean() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void NormalInverseChiSq_Group::clear_mean() {
-  mean_ = 0;
-  clear_has_mean();
-}
-inline float NormalInverseChiSq_Group::mean() const {
-  return mean_;
-}
-inline void NormalInverseChiSq_Group::set_mean(float value) {
-  set_has_mean();
-  mean_ = value;
-}
-
-// required float count_times_variance = 3;
-inline bool NormalInverseChiSq_Group::has_count_times_variance() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
-}
-inline void NormalInverseChiSq_Group::set_has_count_times_variance() {
-  _has_bits_[0] |= 0x00000004u;
-}
-inline void NormalInverseChiSq_Group::clear_has_count_times_variance() {
-  _has_bits_[0] &= ~0x00000004u;
-}
-inline void NormalInverseChiSq_Group::clear_count_times_variance() {
-  count_times_variance_ = 0;
-  clear_has_count_times_variance();
-}
-inline float NormalInverseChiSq_Group::count_times_variance() const {
-  return count_times_variance_;
-}
-inline void NormalInverseChiSq_Group::set_count_times_variance(float value) {
-  set_has_count_times_variance();
-  count_times_variance_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// NormalInverseChiSq
-
-// -------------------------------------------------------------------
-
-// NormalInverseWishart_Shared
-
-// repeated float mu = 1;
-inline int NormalInverseWishart_Shared::mu_size() const {
-  return mu_.size();
-}
-inline void NormalInverseWishart_Shared::clear_mu() {
-  mu_.Clear();
-}
-inline float NormalInverseWishart_Shared::mu(int index) const {
-  return mu_.Get(index);
-}
-inline void NormalInverseWishart_Shared::set_mu(int index, float value) {
-  mu_.Set(index, value);
-}
-inline void NormalInverseWishart_Shared::add_mu(float value) {
-  mu_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< float >&
-NormalInverseWishart_Shared::mu() const {
-  return mu_;
-}
-inline ::google::protobuf::RepeatedField< float >*
-NormalInverseWishart_Shared::mutable_mu() {
-  return &mu_;
-}
-
-// required float kappa = 2;
-inline bool NormalInverseWishart_Shared::has_kappa() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
-}
-inline void NormalInverseWishart_Shared::set_has_kappa() {
-  _has_bits_[0] |= 0x00000002u;
-}
-inline void NormalInverseWishart_Shared::clear_has_kappa() {
-  _has_bits_[0] &= ~0x00000002u;
-}
-inline void NormalInverseWishart_Shared::clear_kappa() {
-  kappa_ = 0;
-  clear_has_kappa();
-}
-inline float NormalInverseWishart_Shared::kappa() const {
-  return kappa_;
-}
-inline void NormalInverseWishart_Shared::set_kappa(float value) {
-  set_has_kappa();
-  kappa_ = value;
-}
-
-// repeated float psi = 3;
-inline int NormalInverseWishart_Shared::psi_size() const {
-  return psi_.size();
-}
-inline void NormalInverseWishart_Shared::clear_psi() {
-  psi_.Clear();
-}
-inline float NormalInverseWishart_Shared::psi(int index) const {
-  return psi_.Get(index);
-}
-inline void NormalInverseWishart_Shared::set_psi(int index, float value) {
-  psi_.Set(index, value);
-}
-inline void NormalInverseWishart_Shared::add_psi(float value) {
-  psi_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< float >&
-NormalInverseWishart_Shared::psi() const {
-  return psi_;
-}
-inline ::google::protobuf::RepeatedField< float >*
-NormalInverseWishart_Shared::mutable_psi() {
-  return &psi_;
-}
-
-// required float nu = 4;
-inline bool NormalInverseWishart_Shared::has_nu() const {
-  return (_has_bits_[0] & 0x00000008u) != 0;
-}
-inline void NormalInverseWishart_Shared::set_has_nu() {
-  _has_bits_[0] |= 0x00000008u;
-}
-inline void NormalInverseWishart_Shared::clear_has_nu() {
-  _has_bits_[0] &= ~0x00000008u;
-}
-inline void NormalInverseWishart_Shared::clear_nu() {
-  nu_ = 0;
-  clear_has_nu();
-}
-inline float NormalInverseWishart_Shared::nu() const {
-  return nu_;
-}
-inline void NormalInverseWishart_Shared::set_nu(float value) {
-  set_has_nu();
-  nu_ = value;
-}
-
-// -------------------------------------------------------------------
-
-// NormalInverseWishart_Group
-
-// required int32 count = 1;
-inline bool NormalInverseWishart_Group::has_count() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
-}
-inline void NormalInverseWishart_Group::set_has_count() {
-  _has_bits_[0] |= 0x00000001u;
-}
-inline void NormalInverseWishart_Group::clear_has_count() {
-  _has_bits_[0] &= ~0x00000001u;
-}
-inline void NormalInverseWishart_Group::clear_count() {
-  count_ = 0;
-  clear_has_count();
-}
-inline ::google::protobuf::int32 NormalInverseWishart_Group::count() const {
-  return count_;
-}
-inline void NormalInverseWishart_Group::set_count(::google::protobuf::int32 value) {
-  set_has_count();
-  count_ = value;
-}
-
-// repeated float sum_x = 2;
-inline int NormalInverseWishart_Group::sum_x_size() const {
-  return sum_x_.size();
-}
-inline void NormalInverseWishart_Group::clear_sum_x() {
-  sum_x_.Clear();
-}
-inline float NormalInverseWishart_Group::sum_x(int index) const {
-  return sum_x_.Get(index);
-}
-inline void NormalInverseWishart_Group::set_sum_x(int index, float value) {
-  sum_x_.Set(index, value);
-}
-inline void NormalInverseWishart_Group::add_sum_x(float value) {
-  sum_x_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< float >&
-NormalInverseWishart_Group::sum_x() const {
-  return sum_x_;
-}
-inline ::google::protobuf::RepeatedField< float >*
-NormalInverseWishart_Group::mutable_sum_x() {
-  return &sum_x_;
-}
-
-// repeated float sum_xxT = 3;
-inline int NormalInverseWishart_Group::sum_xxt_size() const {
-  return sum_xxt_.size();
-}
-inline void NormalInverseWishart_Group::clear_sum_xxt() {
-  sum_xxt_.Clear();
-}
-inline float NormalInverseWishart_Group::sum_xxt(int index) const {
-  return sum_xxt_.Get(index);
-}
-inline void NormalInverseWishart_Group::set_sum_xxt(int index, float value) {
-  sum_xxt_.Set(index, value);
-}
-inline void NormalInverseWishart_Group::add_sum_xxt(float value) {
-  sum_xxt_.Add(value);
-}
-inline const ::google::protobuf::RepeatedField< float >&
-NormalInverseWishart_Group::sum_xxt() const {
-  return sum_xxt_;
-}
-inline ::google::protobuf::RepeatedField< float >*
-NormalInverseWishart_Group::mutable_sum_xxt() {
-  return &sum_xxt_;
-}
-
-// -------------------------------------------------------------------
-
-// NormalInverseWishart
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-}  // namespace distributions
-}  // namespace protobuf
-
-#ifndef SWIG
-namespace google {
-namespace protobuf {
-
-
-}  // namespace google
-}  // namespace protobuf
-#endif  // SWIG
-
-// @@protoc_insertion_point(global_scope)
-
-#endif  // PROTOBUF_distributions_2fio_2fschema_2eproto__INCLUDED
diff --git a/src/io/schema.pb.cc b/src/io/schema.pb.cc
deleted file mode 100644
index 15dbced..0000000
--- a/src/io/schema.pb.cc
+++ /dev/null
@@ -1,7138 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
-#include "distributions/io/schema.pb.h"
-
-#include <algorithm>
-
-#include <google/protobuf/stubs/once.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/wire_format_lite_inl.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/reflection_ops.h>
-#include <google/protobuf/wire_format.h>
-// @@protoc_insertion_point(includes)
-
-namespace protobuf {
-namespace distributions {
-
-namespace {
-
-const ::google::protobuf::Descriptor* Clustering_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  Clustering_reflection_ = NULL;
-const ::google::protobuf::Descriptor* Clustering_PitmanYor_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  Clustering_PitmanYor_reflection_ = NULL;
-const ::google::protobuf::Descriptor* Clustering_LowEntropy_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  Clustering_LowEntropy_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaBernoulli_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaBernoulli_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaBernoulli_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaBernoulli_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaBernoulli_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaBernoulli_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletDiscrete_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletDiscrete_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletDiscrete_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletDiscrete_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletDiscrete_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletDiscrete_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletProcessDiscrete_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletProcessDiscrete_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  DirichletProcessDiscrete_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  PitmanYorProcessDiscrete_reflection_ = NULL;
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  PitmanYorProcessDiscrete_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  PitmanYorProcessDiscrete_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* GammaPoisson_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  GammaPoisson_reflection_ = NULL;
-const ::google::protobuf::Descriptor* GammaPoisson_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  GammaPoisson_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* GammaPoisson_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  GammaPoisson_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaNegativeBinomial_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaNegativeBinomial_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  BetaNegativeBinomial_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseChiSq_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseChiSq_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseChiSq_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseChiSq_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseChiSq_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseChiSq_Group_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseWishart_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseWishart_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseWishart_Shared_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseWishart_Shared_reflection_ = NULL;
-const ::google::protobuf::Descriptor* NormalInverseWishart_Group_descriptor_ = NULL;
-const ::google::protobuf::internal::GeneratedMessageReflection*
-  NormalInverseWishart_Group_reflection_ = NULL;
-
-}  // namespace
-
-
-void protobuf_AssignDesc_distributions_2fio_2fschema_2eproto() {
-  protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  const ::google::protobuf::FileDescriptor* file =
-    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
-      "distributions/io/schema.proto");
-  GOOGLE_CHECK(file != NULL);
-  Clustering_descriptor_ = file->message_type(0);
-  static const int Clustering_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering, pitman_yor_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering, low_entropy_),
-  };
-  Clustering_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      Clustering_descriptor_,
-      Clustering::default_instance_,
-      Clustering_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(Clustering));
-  Clustering_PitmanYor_descriptor_ = Clustering_descriptor_->nested_type(0);
-  static const int Clustering_PitmanYor_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_PitmanYor, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_PitmanYor, d_),
-  };
-  Clustering_PitmanYor_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      Clustering_PitmanYor_descriptor_,
-      Clustering_PitmanYor::default_instance_,
-      Clustering_PitmanYor_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_PitmanYor, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_PitmanYor, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(Clustering_PitmanYor));
-  Clustering_LowEntropy_descriptor_ = Clustering_descriptor_->nested_type(1);
-  static const int Clustering_LowEntropy_offsets_[1] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_LowEntropy, dataset_size_),
-  };
-  Clustering_LowEntropy_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      Clustering_LowEntropy_descriptor_,
-      Clustering_LowEntropy::default_instance_,
-      Clustering_LowEntropy_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_LowEntropy, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Clustering_LowEntropy, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(Clustering_LowEntropy));
-  BetaBernoulli_descriptor_ = file->message_type(1);
-  static const int BetaBernoulli_offsets_[1] = {
-  };
-  BetaBernoulli_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaBernoulli_descriptor_,
-      BetaBernoulli::default_instance_,
-      BetaBernoulli_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaBernoulli));
-  BetaBernoulli_Shared_descriptor_ = BetaBernoulli_descriptor_->nested_type(0);
-  static const int BetaBernoulli_Shared_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Shared, beta_),
-  };
-  BetaBernoulli_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaBernoulli_Shared_descriptor_,
-      BetaBernoulli_Shared::default_instance_,
-      BetaBernoulli_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaBernoulli_Shared));
-  BetaBernoulli_Group_descriptor_ = BetaBernoulli_descriptor_->nested_type(1);
-  static const int BetaBernoulli_Group_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Group, heads_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Group, tails_),
-  };
-  BetaBernoulli_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaBernoulli_Group_descriptor_,
-      BetaBernoulli_Group::default_instance_,
-      BetaBernoulli_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaBernoulli_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaBernoulli_Group));
-  DirichletDiscrete_descriptor_ = file->message_type(2);
-  static const int DirichletDiscrete_offsets_[1] = {
-  };
-  DirichletDiscrete_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletDiscrete_descriptor_,
-      DirichletDiscrete::default_instance_,
-      DirichletDiscrete_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletDiscrete));
-  DirichletDiscrete_Shared_descriptor_ = DirichletDiscrete_descriptor_->nested_type(0);
-  static const int DirichletDiscrete_Shared_offsets_[1] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Shared, alphas_),
-  };
-  DirichletDiscrete_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletDiscrete_Shared_descriptor_,
-      DirichletDiscrete_Shared::default_instance_,
-      DirichletDiscrete_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletDiscrete_Shared));
-  DirichletDiscrete_Group_descriptor_ = DirichletDiscrete_descriptor_->nested_type(1);
-  static const int DirichletDiscrete_Group_offsets_[1] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Group, counts_),
-  };
-  DirichletDiscrete_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletDiscrete_Group_descriptor_,
-      DirichletDiscrete_Group::default_instance_,
-      DirichletDiscrete_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletDiscrete_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletDiscrete_Group));
-  DirichletProcessDiscrete_descriptor_ = file->message_type(3);
-  static const int DirichletProcessDiscrete_offsets_[1] = {
-  };
-  DirichletProcessDiscrete_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletProcessDiscrete_descriptor_,
-      DirichletProcessDiscrete::default_instance_,
-      DirichletProcessDiscrete_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletProcessDiscrete));
-  DirichletProcessDiscrete_Shared_descriptor_ = DirichletProcessDiscrete_descriptor_->nested_type(0);
-  static const int DirichletProcessDiscrete_Shared_offsets_[5] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, gamma_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, values_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, betas_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, counts_),
-  };
-  DirichletProcessDiscrete_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletProcessDiscrete_Shared_descriptor_,
-      DirichletProcessDiscrete_Shared::default_instance_,
-      DirichletProcessDiscrete_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletProcessDiscrete_Shared));
-  DirichletProcessDiscrete_Group_descriptor_ = DirichletProcessDiscrete_descriptor_->nested_type(1);
-  static const int DirichletProcessDiscrete_Group_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Group, keys_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Group, values_),
-  };
-  DirichletProcessDiscrete_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      DirichletProcessDiscrete_Group_descriptor_,
-      DirichletProcessDiscrete_Group::default_instance_,
-      DirichletProcessDiscrete_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DirichletProcessDiscrete_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(DirichletProcessDiscrete_Group));
-  PitmanYorProcessDiscrete_descriptor_ = file->message_type(4);
-  static const int PitmanYorProcessDiscrete_offsets_[1] = {
-  };
-  PitmanYorProcessDiscrete_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      PitmanYorProcessDiscrete_descriptor_,
-      PitmanYorProcessDiscrete::default_instance_,
-      PitmanYorProcessDiscrete_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(PitmanYorProcessDiscrete));
-  PitmanYorProcessDiscrete_Shared_descriptor_ = PitmanYorProcessDiscrete_descriptor_->nested_type(0);
-  static const int PitmanYorProcessDiscrete_Shared_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, d_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, counts_),
-  };
-  PitmanYorProcessDiscrete_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      PitmanYorProcessDiscrete_Shared_descriptor_,
-      PitmanYorProcessDiscrete_Shared::default_instance_,
-      PitmanYorProcessDiscrete_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(PitmanYorProcessDiscrete_Shared));
-  PitmanYorProcessDiscrete_Group_descriptor_ = PitmanYorProcessDiscrete_descriptor_->nested_type(1);
-  static const int PitmanYorProcessDiscrete_Group_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Group, keys_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Group, values_),
-  };
-  PitmanYorProcessDiscrete_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      PitmanYorProcessDiscrete_Group_descriptor_,
-      PitmanYorProcessDiscrete_Group::default_instance_,
-      PitmanYorProcessDiscrete_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PitmanYorProcessDiscrete_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(PitmanYorProcessDiscrete_Group));
-  GammaPoisson_descriptor_ = file->message_type(5);
-  static const int GammaPoisson_offsets_[1] = {
-  };
-  GammaPoisson_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      GammaPoisson_descriptor_,
-      GammaPoisson::default_instance_,
-      GammaPoisson_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(GammaPoisson));
-  GammaPoisson_Shared_descriptor_ = GammaPoisson_descriptor_->nested_type(0);
-  static const int GammaPoisson_Shared_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Shared, inv_beta_),
-  };
-  GammaPoisson_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      GammaPoisson_Shared_descriptor_,
-      GammaPoisson_Shared::default_instance_,
-      GammaPoisson_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(GammaPoisson_Shared));
-  GammaPoisson_Group_descriptor_ = GammaPoisson_descriptor_->nested_type(1);
-  static const int GammaPoisson_Group_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, count_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, sum_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, log_prod_),
-  };
-  GammaPoisson_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      GammaPoisson_Group_descriptor_,
-      GammaPoisson_Group::default_instance_,
-      GammaPoisson_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GammaPoisson_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(GammaPoisson_Group));
-  BetaNegativeBinomial_descriptor_ = file->message_type(6);
-  static const int BetaNegativeBinomial_offsets_[1] = {
-  };
-  BetaNegativeBinomial_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaNegativeBinomial_descriptor_,
-      BetaNegativeBinomial::default_instance_,
-      BetaNegativeBinomial_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaNegativeBinomial));
-  BetaNegativeBinomial_Shared_descriptor_ = BetaNegativeBinomial_descriptor_->nested_type(0);
-  static const int BetaNegativeBinomial_Shared_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, alpha_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, beta_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, r_),
-  };
-  BetaNegativeBinomial_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaNegativeBinomial_Shared_descriptor_,
-      BetaNegativeBinomial_Shared::default_instance_,
-      BetaNegativeBinomial_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaNegativeBinomial_Shared));
-  BetaNegativeBinomial_Group_descriptor_ = BetaNegativeBinomial_descriptor_->nested_type(1);
-  static const int BetaNegativeBinomial_Group_offsets_[2] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Group, count_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Group, sum_),
-  };
-  BetaNegativeBinomial_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      BetaNegativeBinomial_Group_descriptor_,
-      BetaNegativeBinomial_Group::default_instance_,
-      BetaNegativeBinomial_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BetaNegativeBinomial_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(BetaNegativeBinomial_Group));
-  NormalInverseChiSq_descriptor_ = file->message_type(7);
-  static const int NormalInverseChiSq_offsets_[1] = {
-  };
-  NormalInverseChiSq_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseChiSq_descriptor_,
-      NormalInverseChiSq::default_instance_,
-      NormalInverseChiSq_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseChiSq));
-  NormalInverseChiSq_Shared_descriptor_ = NormalInverseChiSq_descriptor_->nested_type(0);
-  static const int NormalInverseChiSq_Shared_offsets_[4] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, mu_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, kappa_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, sigmasq_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, nu_),
-  };
-  NormalInverseChiSq_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseChiSq_Shared_descriptor_,
-      NormalInverseChiSq_Shared::default_instance_,
-      NormalInverseChiSq_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseChiSq_Shared));
-  NormalInverseChiSq_Group_descriptor_ = NormalInverseChiSq_descriptor_->nested_type(1);
-  static const int NormalInverseChiSq_Group_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, count_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, mean_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, count_times_variance_),
-  };
-  NormalInverseChiSq_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseChiSq_Group_descriptor_,
-      NormalInverseChiSq_Group::default_instance_,
-      NormalInverseChiSq_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseChiSq_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseChiSq_Group));
-  NormalInverseWishart_descriptor_ = file->message_type(8);
-  static const int NormalInverseWishart_offsets_[1] = {
-  };
-  NormalInverseWishart_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseWishart_descriptor_,
-      NormalInverseWishart::default_instance_,
-      NormalInverseWishart_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseWishart));
-  NormalInverseWishart_Shared_descriptor_ = NormalInverseWishart_descriptor_->nested_type(0);
-  static const int NormalInverseWishart_Shared_offsets_[4] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, mu_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, kappa_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, psi_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, nu_),
-  };
-  NormalInverseWishart_Shared_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseWishart_Shared_descriptor_,
-      NormalInverseWishart_Shared::default_instance_,
-      NormalInverseWishart_Shared_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Shared, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseWishart_Shared));
-  NormalInverseWishart_Group_descriptor_ = NormalInverseWishart_descriptor_->nested_type(1);
-  static const int NormalInverseWishart_Group_offsets_[3] = {
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, count_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, sum_x_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, sum_xxt_),
-  };
-  NormalInverseWishart_Group_reflection_ =
-    new ::google::protobuf::internal::GeneratedMessageReflection(
-      NormalInverseWishart_Group_descriptor_,
-      NormalInverseWishart_Group::default_instance_,
-      NormalInverseWishart_Group_offsets_,
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, _has_bits_[0]),
-      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalInverseWishart_Group, _unknown_fields_),
-      -1,
-      ::google::protobuf::DescriptorPool::generated_pool(),
-      ::google::protobuf::MessageFactory::generated_factory(),
-      sizeof(NormalInverseWishart_Group));
-}
-
-namespace {
-
-GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
-inline void protobuf_AssignDescriptorsOnce() {
-  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
-                 &protobuf_AssignDesc_distributions_2fio_2fschema_2eproto);
-}
-
-void protobuf_RegisterTypes(const ::std::string&) {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    Clustering_descriptor_, &Clustering::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    Clustering_PitmanYor_descriptor_, &Clustering_PitmanYor::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    Clustering_LowEntropy_descriptor_, &Clustering_LowEntropy::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaBernoulli_descriptor_, &BetaBernoulli::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaBernoulli_Shared_descriptor_, &BetaBernoulli_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaBernoulli_Group_descriptor_, &BetaBernoulli_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletDiscrete_descriptor_, &DirichletDiscrete::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletDiscrete_Shared_descriptor_, &DirichletDiscrete_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletDiscrete_Group_descriptor_, &DirichletDiscrete_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletProcessDiscrete_descriptor_, &DirichletProcessDiscrete::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletProcessDiscrete_Shared_descriptor_, &DirichletProcessDiscrete_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    DirichletProcessDiscrete_Group_descriptor_, &DirichletProcessDiscrete_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    PitmanYorProcessDiscrete_descriptor_, &PitmanYorProcessDiscrete::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    PitmanYorProcessDiscrete_Shared_descriptor_, &PitmanYorProcessDiscrete_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    PitmanYorProcessDiscrete_Group_descriptor_, &PitmanYorProcessDiscrete_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    GammaPoisson_descriptor_, &GammaPoisson::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    GammaPoisson_Shared_descriptor_, &GammaPoisson_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    GammaPoisson_Group_descriptor_, &GammaPoisson_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaNegativeBinomial_descriptor_, &BetaNegativeBinomial::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaNegativeBinomial_Shared_descriptor_, &BetaNegativeBinomial_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    BetaNegativeBinomial_Group_descriptor_, &BetaNegativeBinomial_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseChiSq_descriptor_, &NormalInverseChiSq::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseChiSq_Shared_descriptor_, &NormalInverseChiSq_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseChiSq_Group_descriptor_, &NormalInverseChiSq_Group::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseWishart_descriptor_, &NormalInverseWishart::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseWishart_Shared_descriptor_, &NormalInverseWishart_Shared::default_instance());
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
-    NormalInverseWishart_Group_descriptor_, &NormalInverseWishart_Group::default_instance());
-}
-
-}  // namespace
-
-void protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto() {
-  delete Clustering::default_instance_;
-  delete Clustering_reflection_;
-  delete Clustering_PitmanYor::default_instance_;
-  delete Clustering_PitmanYor_reflection_;
-  delete Clustering_LowEntropy::default_instance_;
-  delete Clustering_LowEntropy_reflection_;
-  delete BetaBernoulli::default_instance_;
-  delete BetaBernoulli_reflection_;
-  delete BetaBernoulli_Shared::default_instance_;
-  delete BetaBernoulli_Shared_reflection_;
-  delete BetaBernoulli_Group::default_instance_;
-  delete BetaBernoulli_Group_reflection_;
-  delete DirichletDiscrete::default_instance_;
-  delete DirichletDiscrete_reflection_;
-  delete DirichletDiscrete_Shared::default_instance_;
-  delete DirichletDiscrete_Shared_reflection_;
-  delete DirichletDiscrete_Group::default_instance_;
-  delete DirichletDiscrete_Group_reflection_;
-  delete DirichletProcessDiscrete::default_instance_;
-  delete DirichletProcessDiscrete_reflection_;
-  delete DirichletProcessDiscrete_Shared::default_instance_;
-  delete DirichletProcessDiscrete_Shared_reflection_;
-  delete DirichletProcessDiscrete_Group::default_instance_;
-  delete DirichletProcessDiscrete_Group_reflection_;
-  delete PitmanYorProcessDiscrete::default_instance_;
-  delete PitmanYorProcessDiscrete_reflection_;
-  delete PitmanYorProcessDiscrete_Shared::default_instance_;
-  delete PitmanYorProcessDiscrete_Shared_reflection_;
-  delete PitmanYorProcessDiscrete_Group::default_instance_;
-  delete PitmanYorProcessDiscrete_Group_reflection_;
-  delete GammaPoisson::default_instance_;
-  delete GammaPoisson_reflection_;
-  delete GammaPoisson_Shared::default_instance_;
-  delete GammaPoisson_Shared_reflection_;
-  delete GammaPoisson_Group::default_instance_;
-  delete GammaPoisson_Group_reflection_;
-  delete BetaNegativeBinomial::default_instance_;
-  delete BetaNegativeBinomial_reflection_;
-  delete BetaNegativeBinomial_Shared::default_instance_;
-  delete BetaNegativeBinomial_Shared_reflection_;
-  delete BetaNegativeBinomial_Group::default_instance_;
-  delete BetaNegativeBinomial_Group_reflection_;
-  delete NormalInverseChiSq::default_instance_;
-  delete NormalInverseChiSq_reflection_;
-  delete NormalInverseChiSq_Shared::default_instance_;
-  delete NormalInverseChiSq_Shared_reflection_;
-  delete NormalInverseChiSq_Group::default_instance_;
-  delete NormalInverseChiSq_Group_reflection_;
-  delete NormalInverseWishart::default_instance_;
-  delete NormalInverseWishart_reflection_;
-  delete NormalInverseWishart_Shared::default_instance_;
-  delete NormalInverseWishart_Shared_reflection_;
-  delete NormalInverseWishart_Group::default_instance_;
-  delete NormalInverseWishart_Group_reflection_;
-}
-
-void protobuf_AddDesc_distributions_2fio_2fschema_2eproto() {
-  static bool already_here = false;
-  if (already_here) return;
-  already_here = true;
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-    "\n\035distributions/io/schema.proto\022\026protobu"
-    "f.distributions\"\335\001\n\nClustering\022@\n\npitman"
-    "_yor\030\001 \001(\0132,.protobuf.distributions.Clus"
-    "tering.PitmanYor\022B\n\013low_entropy\030\002 \001(\0132-."
-    "protobuf.distributions.Clustering.LowEnt"
-    "ropy\032%\n\tPitmanYor\022\r\n\005alpha\030\001 \002(\002\022\t\n\001d\030\002 "
-    "\002(\002\032\"\n\nLowEntropy\022\024\n\014dataset_size\030\001 \002(\004\""
-    "]\n\rBetaBernoulli\032%\n\006Shared\022\r\n\005alpha\030\001 \002("
-    "\002\022\014\n\004beta\030\002 \002(\002\032%\n\005Group\022\r\n\005heads\030\001 \002(\004\022"
-    "\r\n\005tails\030\002 \002(\004\"F\n\021DirichletDiscrete\032\030\n\006S"
-    "hared\022\016\n\006alphas\030\001 \003(\002\032\027\n\005Group\022\016\n\006counts"
-    "\030\001 \003(\004\"\230\001\n\030DirichletProcessDiscrete\032U\n\006S"
-    "hared\022\r\n\005gamma\030\001 \002(\002\022\r\n\005alpha\030\002 \002(\002\022\016\n\006v"
-    "alues\030\003 \003(\r\022\r\n\005betas\030\004 \003(\002\022\016\n\006counts\030\005 \003"
-    "(\004\032%\n\005Group\022\014\n\004keys\030\001 \003(\r\022\016\n\006values\030\002 \003("
-    "\004\"u\n\030PitmanYorProcessDiscrete\0322\n\006Shared\022"
-    "\r\n\005alpha\030\001 \002(\002\022\t\n\001d\030\002 \003(\002\022\016\n\006counts\030\003 \003("
-    "\004\032%\n\005Group\022\014\n\004keys\030\001 \003(\r\022\016\n\006values\030\002 \003(\004"
-    "\"p\n\014GammaPoisson\032)\n\006Shared\022\r\n\005alpha\030\001 \002("
-    "\002\022\020\n\010inv_beta\030\002 \002(\002\0325\n\005Group\022\r\n\005count\030\001 "
-    "\002(\004\022\013\n\003sum\030\002 \002(\004\022\020\n\010log_prod\030\003 \002(\002\"m\n\024Be"
-    "taNegativeBinomial\0320\n\006Shared\022\r\n\005alpha\030\001 "
-    "\002(\002\022\014\n\004beta\030\002 \002(\002\022\t\n\001r\030\003 \002(\004\032#\n\005Group\022\r\n"
-    "\005count\030\001 \002(\004\022\013\n\003sum\030\002 \002(\004\"\232\001\n\022NormalInve"
-    "rseChiSq\032@\n\006Shared\022\n\n\002mu\030\001 \002(\002\022\r\n\005kappa\030"
-    "\002 \002(\002\022\017\n\007sigmasq\030\003 \002(\002\022\n\n\002nu\030\004 \002(\002\032B\n\005Gr"
-    "oup\022\r\n\005count\030\001 \002(\004\022\014\n\004mean\030\002 \002(\002\022\034\n\024coun"
-    "t_times_variance\030\003 \002(\002\"\214\001\n\024NormalInverse"
-    "Wishart\032<\n\006Shared\022\n\n\002mu\030\001 \003(\002\022\r\n\005kappa\030\002"
-    " \002(\002\022\013\n\003psi\030\003 \003(\002\022\n\n\002nu\030\004 \002(\002\0326\n\005Group\022\r"
-    "\n\005count\030\001 \002(\005\022\r\n\005sum_x\030\002 \003(\002\022\017\n\007sum_xxT\030"
-    "\003 \003(\002", 1245);
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
-    "distributions/io/schema.proto", &protobuf_RegisterTypes);
-  Clustering::default_instance_ = new Clustering();
-  Clustering_PitmanYor::default_instance_ = new Clustering_PitmanYor();
-  Clustering_LowEntropy::default_instance_ = new Clustering_LowEntropy();
-  BetaBernoulli::default_instance_ = new BetaBernoulli();
-  BetaBernoulli_Shared::default_instance_ = new BetaBernoulli_Shared();
-  BetaBernoulli_Group::default_instance_ = new BetaBernoulli_Group();
-  DirichletDiscrete::default_instance_ = new DirichletDiscrete();
-  DirichletDiscrete_Shared::default_instance_ = new DirichletDiscrete_Shared();
-  DirichletDiscrete_Group::default_instance_ = new DirichletDiscrete_Group();
-  DirichletProcessDiscrete::default_instance_ = new DirichletProcessDiscrete();
-  DirichletProcessDiscrete_Shared::default_instance_ = new DirichletProcessDiscrete_Shared();
-  DirichletProcessDiscrete_Group::default_instance_ = new DirichletProcessDiscrete_Group();
-  PitmanYorProcessDiscrete::default_instance_ = new PitmanYorProcessDiscrete();
-  PitmanYorProcessDiscrete_Shared::default_instance_ = new PitmanYorProcessDiscrete_Shared();
-  PitmanYorProcessDiscrete_Group::default_instance_ = new PitmanYorProcessDiscrete_Group();
-  GammaPoisson::default_instance_ = new GammaPoisson();
-  GammaPoisson_Shared::default_instance_ = new GammaPoisson_Shared();
-  GammaPoisson_Group::default_instance_ = new GammaPoisson_Group();
-  BetaNegativeBinomial::default_instance_ = new BetaNegativeBinomial();
-  BetaNegativeBinomial_Shared::default_instance_ = new BetaNegativeBinomial_Shared();
-  BetaNegativeBinomial_Group::default_instance_ = new BetaNegativeBinomial_Group();
-  NormalInverseChiSq::default_instance_ = new NormalInverseChiSq();
-  NormalInverseChiSq_Shared::default_instance_ = new NormalInverseChiSq_Shared();
-  NormalInverseChiSq_Group::default_instance_ = new NormalInverseChiSq_Group();
-  NormalInverseWishart::default_instance_ = new NormalInverseWishart();
-  NormalInverseWishart_Shared::default_instance_ = new NormalInverseWishart_Shared();
-  NormalInverseWishart_Group::default_instance_ = new NormalInverseWishart_Group();
-  Clustering::default_instance_->InitAsDefaultInstance();
-  Clustering_PitmanYor::default_instance_->InitAsDefaultInstance();
-  Clustering_LowEntropy::default_instance_->InitAsDefaultInstance();
-  BetaBernoulli::default_instance_->InitAsDefaultInstance();
-  BetaBernoulli_Shared::default_instance_->InitAsDefaultInstance();
-  BetaBernoulli_Group::default_instance_->InitAsDefaultInstance();
-  DirichletDiscrete::default_instance_->InitAsDefaultInstance();
-  DirichletDiscrete_Shared::default_instance_->InitAsDefaultInstance();
-  DirichletDiscrete_Group::default_instance_->InitAsDefaultInstance();
-  DirichletProcessDiscrete::default_instance_->InitAsDefaultInstance();
-  DirichletProcessDiscrete_Shared::default_instance_->InitAsDefaultInstance();
-  DirichletProcessDiscrete_Group::default_instance_->InitAsDefaultInstance();
-  PitmanYorProcessDiscrete::default_instance_->InitAsDefaultInstance();
-  PitmanYorProcessDiscrete_Shared::default_instance_->InitAsDefaultInstance();
-  PitmanYorProcessDiscrete_Group::default_instance_->InitAsDefaultInstance();
-  GammaPoisson::default_instance_->InitAsDefaultInstance();
-  GammaPoisson_Shared::default_instance_->InitAsDefaultInstance();
-  GammaPoisson_Group::default_instance_->InitAsDefaultInstance();
-  BetaNegativeBinomial::default_instance_->InitAsDefaultInstance();
-  BetaNegativeBinomial_Shared::default_instance_->InitAsDefaultInstance();
-  BetaNegativeBinomial_Group::default_instance_->InitAsDefaultInstance();
-  NormalInverseChiSq::default_instance_->InitAsDefaultInstance();
-  NormalInverseChiSq_Shared::default_instance_->InitAsDefaultInstance();
-  NormalInverseChiSq_Group::default_instance_->InitAsDefaultInstance();
-  NormalInverseWishart::default_instance_->InitAsDefaultInstance();
-  NormalInverseWishart_Shared::default_instance_->InitAsDefaultInstance();
-  NormalInverseWishart_Group::default_instance_->InitAsDefaultInstance();
-  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_distributions_2fio_2fschema_2eproto);
-}
-
-// Force AddDescriptors() to be called at static initialization time.
-struct StaticDescriptorInitializer_distributions_2fio_2fschema_2eproto {
-  StaticDescriptorInitializer_distributions_2fio_2fschema_2eproto() {
-    protobuf_AddDesc_distributions_2fio_2fschema_2eproto();
-  }
-} static_descriptor_initializer_distributions_2fio_2fschema_2eproto_;
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int Clustering_PitmanYor::kAlphaFieldNumber;
-const int Clustering_PitmanYor::kDFieldNumber;
-#endif  // !_MSC_VER
-
-Clustering_PitmanYor::Clustering_PitmanYor()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void Clustering_PitmanYor::InitAsDefaultInstance() {
-}
-
-Clustering_PitmanYor::Clustering_PitmanYor(const Clustering_PitmanYor& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void Clustering_PitmanYor::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  d_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-Clustering_PitmanYor::~Clustering_PitmanYor() {
-  SharedDtor();
-}
-
-void Clustering_PitmanYor::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void Clustering_PitmanYor::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* Clustering_PitmanYor::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return Clustering_PitmanYor_descriptor_;
-}
-
-const Clustering_PitmanYor& Clustering_PitmanYor::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-Clustering_PitmanYor* Clustering_PitmanYor::default_instance_ = NULL;
-
-Clustering_PitmanYor* Clustering_PitmanYor::New() const {
-  return new Clustering_PitmanYor;
-}
-
-void Clustering_PitmanYor::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-    d_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool Clustering_PitmanYor::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_d;
-        break;
-      }
-      
-      // required float d = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_d:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &d_)));
-          set_has_d();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void Clustering_PitmanYor::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // required float d = 2;
-  if (has_d()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->d(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* Clustering_PitmanYor::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // required float d = 2;
-  if (has_d()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->d(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int Clustering_PitmanYor::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float d = 2;
-    if (has_d()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void Clustering_PitmanYor::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const Clustering_PitmanYor* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const Clustering_PitmanYor*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void Clustering_PitmanYor::MergeFrom(const Clustering_PitmanYor& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-    if (from.has_d()) {
-      set_d(from.d());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void Clustering_PitmanYor::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Clustering_PitmanYor::CopyFrom(const Clustering_PitmanYor& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Clustering_PitmanYor::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void Clustering_PitmanYor::Swap(Clustering_PitmanYor* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    std::swap(d_, other->d_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata Clustering_PitmanYor::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = Clustering_PitmanYor_descriptor_;
-  metadata.reflection = Clustering_PitmanYor_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int Clustering_LowEntropy::kDatasetSizeFieldNumber;
-#endif  // !_MSC_VER
-
-Clustering_LowEntropy::Clustering_LowEntropy()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void Clustering_LowEntropy::InitAsDefaultInstance() {
-}
-
-Clustering_LowEntropy::Clustering_LowEntropy(const Clustering_LowEntropy& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void Clustering_LowEntropy::SharedCtor() {
-  _cached_size_ = 0;
-  dataset_size_ = GOOGLE_ULONGLONG(0);
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-Clustering_LowEntropy::~Clustering_LowEntropy() {
-  SharedDtor();
-}
-
-void Clustering_LowEntropy::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void Clustering_LowEntropy::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* Clustering_LowEntropy::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return Clustering_LowEntropy_descriptor_;
-}
-
-const Clustering_LowEntropy& Clustering_LowEntropy::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-Clustering_LowEntropy* Clustering_LowEntropy::default_instance_ = NULL;
-
-Clustering_LowEntropy* Clustering_LowEntropy::New() const {
-  return new Clustering_LowEntropy;
-}
-
-void Clustering_LowEntropy::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    dataset_size_ = GOOGLE_ULONGLONG(0);
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool Clustering_LowEntropy::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 dataset_size = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &dataset_size_)));
-          set_has_dataset_size();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void Clustering_LowEntropy::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 dataset_size = 1;
-  if (has_dataset_size()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->dataset_size(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* Clustering_LowEntropy::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 dataset_size = 1;
-  if (has_dataset_size()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->dataset_size(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int Clustering_LowEntropy::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 dataset_size = 1;
-    if (has_dataset_size()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->dataset_size());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void Clustering_LowEntropy::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const Clustering_LowEntropy* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const Clustering_LowEntropy*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void Clustering_LowEntropy::MergeFrom(const Clustering_LowEntropy& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_dataset_size()) {
-      set_dataset_size(from.dataset_size());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void Clustering_LowEntropy::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Clustering_LowEntropy::CopyFrom(const Clustering_LowEntropy& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Clustering_LowEntropy::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
-  
-  return true;
-}
-
-void Clustering_LowEntropy::Swap(Clustering_LowEntropy* other) {
-  if (other != this) {
-    std::swap(dataset_size_, other->dataset_size_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata Clustering_LowEntropy::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = Clustering_LowEntropy_descriptor_;
-  metadata.reflection = Clustering_LowEntropy_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int Clustering::kPitmanYorFieldNumber;
-const int Clustering::kLowEntropyFieldNumber;
-#endif  // !_MSC_VER
-
-Clustering::Clustering()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void Clustering::InitAsDefaultInstance() {
-  pitman_yor_ = const_cast< ::protobuf::distributions::Clustering_PitmanYor*>(&::protobuf::distributions::Clustering_PitmanYor::default_instance());
-  low_entropy_ = const_cast< ::protobuf::distributions::Clustering_LowEntropy*>(&::protobuf::distributions::Clustering_LowEntropy::default_instance());
-}
-
-Clustering::Clustering(const Clustering& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void Clustering::SharedCtor() {
-  _cached_size_ = 0;
-  pitman_yor_ = NULL;
-  low_entropy_ = NULL;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-Clustering::~Clustering() {
-  SharedDtor();
-}
-
-void Clustering::SharedDtor() {
-  if (this != default_instance_) {
-    delete pitman_yor_;
-    delete low_entropy_;
-  }
-}
-
-void Clustering::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* Clustering::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return Clustering_descriptor_;
-}
-
-const Clustering& Clustering::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-Clustering* Clustering::default_instance_ = NULL;
-
-Clustering* Clustering::New() const {
-  return new Clustering;
-}
-
-void Clustering::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (has_pitman_yor()) {
-      if (pitman_yor_ != NULL) pitman_yor_->::protobuf::distributions::Clustering_PitmanYor::Clear();
-    }
-    if (has_low_entropy()) {
-      if (low_entropy_ != NULL) low_entropy_->::protobuf::distributions::Clustering_LowEntropy::Clear();
-    }
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool Clustering::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
-               input, mutable_pitman_yor()));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(18)) goto parse_low_entropy;
-        break;
-      }
-      
-      // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
-         parse_low_entropy:
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
-               input, mutable_low_entropy()));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void Clustering::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-  if (has_pitman_yor()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, this->pitman_yor(), output);
-  }
-  
-  // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-  if (has_low_entropy()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2, this->low_entropy(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* Clustering::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-  if (has_pitman_yor()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteMessageNoVirtualToArray(
-        1, this->pitman_yor(), target);
-  }
-  
-  // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-  if (has_low_entropy()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteMessageNoVirtualToArray(
-        2, this->low_entropy(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int Clustering::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // optional .protobuf.distributions.Clustering.PitmanYor pitman_yor = 1;
-    if (has_pitman_yor()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
-          this->pitman_yor());
-    }
-    
-    // optional .protobuf.distributions.Clustering.LowEntropy low_entropy = 2;
-    if (has_low_entropy()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
-          this->low_entropy());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void Clustering::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const Clustering* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const Clustering*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void Clustering::MergeFrom(const Clustering& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_pitman_yor()) {
-      mutable_pitman_yor()->::protobuf::distributions::Clustering_PitmanYor::MergeFrom(from.pitman_yor());
-    }
-    if (from.has_low_entropy()) {
-      mutable_low_entropy()->::protobuf::distributions::Clustering_LowEntropy::MergeFrom(from.low_entropy());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void Clustering::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Clustering::CopyFrom(const Clustering& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Clustering::IsInitialized() const {
-  
-  if (has_pitman_yor()) {
-    if (!this->pitman_yor().IsInitialized()) return false;
-  }
-  if (has_low_entropy()) {
-    if (!this->low_entropy().IsInitialized()) return false;
-  }
-  return true;
-}
-
-void Clustering::Swap(Clustering* other) {
-  if (other != this) {
-    std::swap(pitman_yor_, other->pitman_yor_);
-    std::swap(low_entropy_, other->low_entropy_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata Clustering::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = Clustering_descriptor_;
-  metadata.reflection = Clustering_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int BetaBernoulli_Shared::kAlphaFieldNumber;
-const int BetaBernoulli_Shared::kBetaFieldNumber;
-#endif  // !_MSC_VER
-
-BetaBernoulli_Shared::BetaBernoulli_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaBernoulli_Shared::InitAsDefaultInstance() {
-}
-
-BetaBernoulli_Shared::BetaBernoulli_Shared(const BetaBernoulli_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaBernoulli_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  beta_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaBernoulli_Shared::~BetaBernoulli_Shared() {
-  SharedDtor();
-}
-
-void BetaBernoulli_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaBernoulli_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaBernoulli_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaBernoulli_Shared_descriptor_;
-}
-
-const BetaBernoulli_Shared& BetaBernoulli_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaBernoulli_Shared* BetaBernoulli_Shared::default_instance_ = NULL;
-
-BetaBernoulli_Shared* BetaBernoulli_Shared::New() const {
-  return new BetaBernoulli_Shared;
-}
-
-void BetaBernoulli_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-    beta_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaBernoulli_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_beta;
-        break;
-      }
-      
-      // required float beta = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_beta:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &beta_)));
-          set_has_beta();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void BetaBernoulli_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // required float beta = 2;
-  if (has_beta()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->beta(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaBernoulli_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // required float beta = 2;
-  if (has_beta()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->beta(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaBernoulli_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float beta = 2;
-    if (has_beta()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaBernoulli_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaBernoulli_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaBernoulli_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaBernoulli_Shared::MergeFrom(const BetaBernoulli_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-    if (from.has_beta()) {
-      set_beta(from.beta());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaBernoulli_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaBernoulli_Shared::CopyFrom(const BetaBernoulli_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaBernoulli_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void BetaBernoulli_Shared::Swap(BetaBernoulli_Shared* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    std::swap(beta_, other->beta_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaBernoulli_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaBernoulli_Shared_descriptor_;
-  metadata.reflection = BetaBernoulli_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int BetaBernoulli_Group::kHeadsFieldNumber;
-const int BetaBernoulli_Group::kTailsFieldNumber;
-#endif  // !_MSC_VER
-
-BetaBernoulli_Group::BetaBernoulli_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaBernoulli_Group::InitAsDefaultInstance() {
-}
-
-BetaBernoulli_Group::BetaBernoulli_Group(const BetaBernoulli_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaBernoulli_Group::SharedCtor() {
-  _cached_size_ = 0;
-  heads_ = GOOGLE_ULONGLONG(0);
-  tails_ = GOOGLE_ULONGLONG(0);
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaBernoulli_Group::~BetaBernoulli_Group() {
-  SharedDtor();
-}
-
-void BetaBernoulli_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaBernoulli_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaBernoulli_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaBernoulli_Group_descriptor_;
-}
-
-const BetaBernoulli_Group& BetaBernoulli_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaBernoulli_Group* BetaBernoulli_Group::default_instance_ = NULL;
-
-BetaBernoulli_Group* BetaBernoulli_Group::New() const {
-  return new BetaBernoulli_Group;
-}
-
-void BetaBernoulli_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    heads_ = GOOGLE_ULONGLONG(0);
-    tails_ = GOOGLE_ULONGLONG(0);
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaBernoulli_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 heads = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &heads_)));
-          set_has_heads();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_tails;
-        break;
-      }
-      
-      // required uint64 tails = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_tails:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &tails_)));
-          set_has_tails();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void BetaBernoulli_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 heads = 1;
-  if (has_heads()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->heads(), output);
-  }
-  
-  // required uint64 tails = 2;
-  if (has_tails()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->tails(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaBernoulli_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 heads = 1;
-  if (has_heads()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->heads(), target);
-  }
-  
-  // required uint64 tails = 2;
-  if (has_tails()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->tails(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaBernoulli_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 heads = 1;
-    if (has_heads()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->heads());
-    }
-    
-    // required uint64 tails = 2;
-    if (has_tails()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->tails());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaBernoulli_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaBernoulli_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaBernoulli_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaBernoulli_Group::MergeFrom(const BetaBernoulli_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_heads()) {
-      set_heads(from.heads());
-    }
-    if (from.has_tails()) {
-      set_tails(from.tails());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaBernoulli_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaBernoulli_Group::CopyFrom(const BetaBernoulli_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaBernoulli_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void BetaBernoulli_Group::Swap(BetaBernoulli_Group* other) {
-  if (other != this) {
-    std::swap(heads_, other->heads_);
-    std::swap(tails_, other->tails_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaBernoulli_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaBernoulli_Group_descriptor_;
-  metadata.reflection = BetaBernoulli_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-BetaBernoulli::BetaBernoulli()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaBernoulli::InitAsDefaultInstance() {
-}
-
-BetaBernoulli::BetaBernoulli(const BetaBernoulli& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaBernoulli::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaBernoulli::~BetaBernoulli() {
-  SharedDtor();
-}
-
-void BetaBernoulli::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaBernoulli::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaBernoulli::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaBernoulli_descriptor_;
-}
-
-const BetaBernoulli& BetaBernoulli::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaBernoulli* BetaBernoulli::default_instance_ = NULL;
-
-BetaBernoulli* BetaBernoulli::New() const {
-  return new BetaBernoulli;
-}
-
-void BetaBernoulli::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaBernoulli::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void BetaBernoulli::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaBernoulli::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaBernoulli::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaBernoulli::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaBernoulli* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaBernoulli*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaBernoulli::MergeFrom(const BetaBernoulli& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaBernoulli::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaBernoulli::CopyFrom(const BetaBernoulli& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaBernoulli::IsInitialized() const {
-  
-  return true;
-}
-
-void BetaBernoulli::Swap(BetaBernoulli* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaBernoulli::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaBernoulli_descriptor_;
-  metadata.reflection = BetaBernoulli_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int DirichletDiscrete_Shared::kAlphasFieldNumber;
-#endif  // !_MSC_VER
-
-DirichletDiscrete_Shared::DirichletDiscrete_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletDiscrete_Shared::InitAsDefaultInstance() {
-}
-
-DirichletDiscrete_Shared::DirichletDiscrete_Shared(const DirichletDiscrete_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletDiscrete_Shared::~DirichletDiscrete_Shared() {
-  SharedDtor();
-}
-
-void DirichletDiscrete_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletDiscrete_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletDiscrete_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletDiscrete_Shared_descriptor_;
-}
-
-const DirichletDiscrete_Shared& DirichletDiscrete_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletDiscrete_Shared* DirichletDiscrete_Shared::default_instance_ = NULL;
-
-DirichletDiscrete_Shared* DirichletDiscrete_Shared::New() const {
-  return new DirichletDiscrete_Shared;
-}
-
-void DirichletDiscrete_Shared::Clear() {
-  alphas_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletDiscrete_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated float alphas = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_alphas:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 13, input, this->mutable_alphas())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_alphas())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(13)) goto parse_alphas;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletDiscrete_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated float alphas = 1;
-  for (int i = 0; i < this->alphas_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      1, this->alphas(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletDiscrete_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated float alphas = 1;
-  for (int i = 0; i < this->alphas_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(1, this->alphas(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletDiscrete_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  // repeated float alphas = 1;
-  {
-    int data_size = 0;
-    data_size = 4 * this->alphas_size();
-    total_size += 1 * this->alphas_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletDiscrete_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletDiscrete_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletDiscrete_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletDiscrete_Shared::MergeFrom(const DirichletDiscrete_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  alphas_.MergeFrom(from.alphas_);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletDiscrete_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete_Shared::CopyFrom(const DirichletDiscrete_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletDiscrete_Shared::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletDiscrete_Shared::Swap(DirichletDiscrete_Shared* other) {
-  if (other != this) {
-    alphas_.Swap(&other->alphas_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletDiscrete_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletDiscrete_Shared_descriptor_;
-  metadata.reflection = DirichletDiscrete_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int DirichletDiscrete_Group::kCountsFieldNumber;
-#endif  // !_MSC_VER
-
-DirichletDiscrete_Group::DirichletDiscrete_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletDiscrete_Group::InitAsDefaultInstance() {
-}
-
-DirichletDiscrete_Group::DirichletDiscrete_Group(const DirichletDiscrete_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete_Group::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletDiscrete_Group::~DirichletDiscrete_Group() {
-  SharedDtor();
-}
-
-void DirichletDiscrete_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletDiscrete_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletDiscrete_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletDiscrete_Group_descriptor_;
-}
-
-const DirichletDiscrete_Group& DirichletDiscrete_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletDiscrete_Group* DirichletDiscrete_Group::default_instance_ = NULL;
-
-DirichletDiscrete_Group* DirichletDiscrete_Group::New() const {
-  return new DirichletDiscrete_Group;
-}
-
-void DirichletDiscrete_Group::Clear() {
-  counts_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletDiscrete_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated uint64 counts = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_counts:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 8, input, this->mutable_counts())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_counts())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(8)) goto parse_counts;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletDiscrete_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated uint64 counts = 1;
-  for (int i = 0; i < this->counts_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      1, this->counts(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletDiscrete_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated uint64 counts = 1;
-  for (int i = 0; i < this->counts_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(1, this->counts(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletDiscrete_Group::ByteSize() const {
-  int total_size = 0;
-  
-  // repeated uint64 counts = 1;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->counts_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->counts(i));
-    }
-    total_size += 1 * this->counts_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletDiscrete_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletDiscrete_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletDiscrete_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletDiscrete_Group::MergeFrom(const DirichletDiscrete_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  counts_.MergeFrom(from.counts_);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletDiscrete_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete_Group::CopyFrom(const DirichletDiscrete_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletDiscrete_Group::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletDiscrete_Group::Swap(DirichletDiscrete_Group* other) {
-  if (other != this) {
-    counts_.Swap(&other->counts_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletDiscrete_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletDiscrete_Group_descriptor_;
-  metadata.reflection = DirichletDiscrete_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-DirichletDiscrete::DirichletDiscrete()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletDiscrete::InitAsDefaultInstance() {
-}
-
-DirichletDiscrete::DirichletDiscrete(const DirichletDiscrete& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletDiscrete::~DirichletDiscrete() {
-  SharedDtor();
-}
-
-void DirichletDiscrete::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletDiscrete::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletDiscrete::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletDiscrete_descriptor_;
-}
-
-const DirichletDiscrete& DirichletDiscrete::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletDiscrete* DirichletDiscrete::default_instance_ = NULL;
-
-DirichletDiscrete* DirichletDiscrete::New() const {
-  return new DirichletDiscrete;
-}
-
-void DirichletDiscrete::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletDiscrete::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletDiscrete::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletDiscrete::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletDiscrete::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletDiscrete::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletDiscrete* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletDiscrete*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletDiscrete::MergeFrom(const DirichletDiscrete& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletDiscrete::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletDiscrete::CopyFrom(const DirichletDiscrete& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletDiscrete::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletDiscrete::Swap(DirichletDiscrete* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletDiscrete::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletDiscrete_descriptor_;
-  metadata.reflection = DirichletDiscrete_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int DirichletProcessDiscrete_Shared::kGammaFieldNumber;
-const int DirichletProcessDiscrete_Shared::kAlphaFieldNumber;
-const int DirichletProcessDiscrete_Shared::kValuesFieldNumber;
-const int DirichletProcessDiscrete_Shared::kBetasFieldNumber;
-const int DirichletProcessDiscrete_Shared::kCountsFieldNumber;
-#endif  // !_MSC_VER
-
-DirichletProcessDiscrete_Shared::DirichletProcessDiscrete_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletProcessDiscrete_Shared::InitAsDefaultInstance() {
-}
-
-DirichletProcessDiscrete_Shared::DirichletProcessDiscrete_Shared(const DirichletProcessDiscrete_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  gamma_ = 0;
-  alpha_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletProcessDiscrete_Shared::~DirichletProcessDiscrete_Shared() {
-  SharedDtor();
-}
-
-void DirichletProcessDiscrete_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletProcessDiscrete_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletProcessDiscrete_Shared_descriptor_;
-}
-
-const DirichletProcessDiscrete_Shared& DirichletProcessDiscrete_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletProcessDiscrete_Shared* DirichletProcessDiscrete_Shared::default_instance_ = NULL;
-
-DirichletProcessDiscrete_Shared* DirichletProcessDiscrete_Shared::New() const {
-  return new DirichletProcessDiscrete_Shared;
-}
-
-void DirichletProcessDiscrete_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    gamma_ = 0;
-    alpha_ = 0;
-  }
-  values_.Clear();
-  betas_.Clear();
-  counts_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletProcessDiscrete_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float gamma = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &gamma_)));
-          set_has_gamma();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_alpha;
-        break;
-      }
-      
-      // required float alpha = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_alpha:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(24)) goto parse_values;
-        break;
-      }
-      
-      // repeated uint32 values = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_values:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 24, input, this->mutable_values())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_values())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(24)) goto parse_values;
-        if (input->ExpectTag(37)) goto parse_betas;
-        break;
-      }
-      
-      // repeated float betas = 4;
-      case 4: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_betas:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 37, input, this->mutable_betas())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_betas())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(37)) goto parse_betas;
-        if (input->ExpectTag(40)) goto parse_counts;
-        break;
-      }
-      
-      // repeated uint64 counts = 5;
-      case 5: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_counts:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 40, input, this->mutable_counts())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_counts())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(40)) goto parse_counts;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletProcessDiscrete_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float gamma = 1;
-  if (has_gamma()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->gamma(), output);
-  }
-  
-  // required float alpha = 2;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->alpha(), output);
-  }
-  
-  // repeated uint32 values = 3;
-  for (int i = 0; i < this->values_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
-      3, this->values(i), output);
-  }
-  
-  // repeated float betas = 4;
-  for (int i = 0; i < this->betas_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      4, this->betas(i), output);
-  }
-  
-  // repeated uint64 counts = 5;
-  for (int i = 0; i < this->counts_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      5, this->counts(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletProcessDiscrete_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float gamma = 1;
-  if (has_gamma()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->gamma(), target);
-  }
-  
-  // required float alpha = 2;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->alpha(), target);
-  }
-  
-  // repeated uint32 values = 3;
-  for (int i = 0; i < this->values_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32ToArray(3, this->values(i), target);
-  }
-  
-  // repeated float betas = 4;
-  for (int i = 0; i < this->betas_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(4, this->betas(i), target);
-  }
-  
-  // repeated uint64 counts = 5;
-  for (int i = 0; i < this->counts_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(5, this->counts(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletProcessDiscrete_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float gamma = 1;
-    if (has_gamma()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float alpha = 2;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  // repeated uint32 values = 3;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->values_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt32Size(this->values(i));
-    }
-    total_size += 1 * this->values_size() + data_size;
-  }
-  
-  // repeated float betas = 4;
-  {
-    int data_size = 0;
-    data_size = 4 * this->betas_size();
-    total_size += 1 * this->betas_size() + data_size;
-  }
-  
-  // repeated uint64 counts = 5;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->counts_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->counts(i));
-    }
-    total_size += 1 * this->counts_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletProcessDiscrete_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletProcessDiscrete_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletProcessDiscrete_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletProcessDiscrete_Shared::MergeFrom(const DirichletProcessDiscrete_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  values_.MergeFrom(from.values_);
-  betas_.MergeFrom(from.betas_);
-  counts_.MergeFrom(from.counts_);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_gamma()) {
-      set_gamma(from.gamma());
-    }
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletProcessDiscrete_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete_Shared::CopyFrom(const DirichletProcessDiscrete_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletProcessDiscrete_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void DirichletProcessDiscrete_Shared::Swap(DirichletProcessDiscrete_Shared* other) {
-  if (other != this) {
-    std::swap(gamma_, other->gamma_);
-    std::swap(alpha_, other->alpha_);
-    values_.Swap(&other->values_);
-    betas_.Swap(&other->betas_);
-    counts_.Swap(&other->counts_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletProcessDiscrete_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletProcessDiscrete_Shared_descriptor_;
-  metadata.reflection = DirichletProcessDiscrete_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int DirichletProcessDiscrete_Group::kKeysFieldNumber;
-const int DirichletProcessDiscrete_Group::kValuesFieldNumber;
-#endif  // !_MSC_VER
-
-DirichletProcessDiscrete_Group::DirichletProcessDiscrete_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletProcessDiscrete_Group::InitAsDefaultInstance() {
-}
-
-DirichletProcessDiscrete_Group::DirichletProcessDiscrete_Group(const DirichletProcessDiscrete_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete_Group::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletProcessDiscrete_Group::~DirichletProcessDiscrete_Group() {
-  SharedDtor();
-}
-
-void DirichletProcessDiscrete_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletProcessDiscrete_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletProcessDiscrete_Group_descriptor_;
-}
-
-const DirichletProcessDiscrete_Group& DirichletProcessDiscrete_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletProcessDiscrete_Group* DirichletProcessDiscrete_Group::default_instance_ = NULL;
-
-DirichletProcessDiscrete_Group* DirichletProcessDiscrete_Group::New() const {
-  return new DirichletProcessDiscrete_Group;
-}
-
-void DirichletProcessDiscrete_Group::Clear() {
-  keys_.Clear();
-  values_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletProcessDiscrete_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated uint32 keys = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_keys:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 8, input, this->mutable_keys())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_keys())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(8)) goto parse_keys;
-        if (input->ExpectTag(16)) goto parse_values;
-        break;
-      }
-      
-      // repeated uint64 values = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_values:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 16, input, this->mutable_values())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_values())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_values;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletProcessDiscrete_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated uint32 keys = 1;
-  for (int i = 0; i < this->keys_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
-      1, this->keys(i), output);
-  }
-  
-  // repeated uint64 values = 2;
-  for (int i = 0; i < this->values_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      2, this->values(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletProcessDiscrete_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated uint32 keys = 1;
-  for (int i = 0; i < this->keys_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32ToArray(1, this->keys(i), target);
-  }
-  
-  // repeated uint64 values = 2;
-  for (int i = 0; i < this->values_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(2, this->values(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletProcessDiscrete_Group::ByteSize() const {
-  int total_size = 0;
-  
-  // repeated uint32 keys = 1;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->keys_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt32Size(this->keys(i));
-    }
-    total_size += 1 * this->keys_size() + data_size;
-  }
-  
-  // repeated uint64 values = 2;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->values_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->values(i));
-    }
-    total_size += 1 * this->values_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletProcessDiscrete_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletProcessDiscrete_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletProcessDiscrete_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletProcessDiscrete_Group::MergeFrom(const DirichletProcessDiscrete_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  keys_.MergeFrom(from.keys_);
-  values_.MergeFrom(from.values_);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletProcessDiscrete_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete_Group::CopyFrom(const DirichletProcessDiscrete_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletProcessDiscrete_Group::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletProcessDiscrete_Group::Swap(DirichletProcessDiscrete_Group* other) {
-  if (other != this) {
-    keys_.Swap(&other->keys_);
-    values_.Swap(&other->values_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletProcessDiscrete_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletProcessDiscrete_Group_descriptor_;
-  metadata.reflection = DirichletProcessDiscrete_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-DirichletProcessDiscrete::DirichletProcessDiscrete()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void DirichletProcessDiscrete::InitAsDefaultInstance() {
-}
-
-DirichletProcessDiscrete::DirichletProcessDiscrete(const DirichletProcessDiscrete& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-DirichletProcessDiscrete::~DirichletProcessDiscrete() {
-  SharedDtor();
-}
-
-void DirichletProcessDiscrete::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void DirichletProcessDiscrete::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* DirichletProcessDiscrete::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return DirichletProcessDiscrete_descriptor_;
-}
-
-const DirichletProcessDiscrete& DirichletProcessDiscrete::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-DirichletProcessDiscrete* DirichletProcessDiscrete::default_instance_ = NULL;
-
-DirichletProcessDiscrete* DirichletProcessDiscrete::New() const {
-  return new DirichletProcessDiscrete;
-}
-
-void DirichletProcessDiscrete::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool DirichletProcessDiscrete::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void DirichletProcessDiscrete::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* DirichletProcessDiscrete::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int DirichletProcessDiscrete::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void DirichletProcessDiscrete::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const DirichletProcessDiscrete* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const DirichletProcessDiscrete*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void DirichletProcessDiscrete::MergeFrom(const DirichletProcessDiscrete& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void DirichletProcessDiscrete::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void DirichletProcessDiscrete::CopyFrom(const DirichletProcessDiscrete& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool DirichletProcessDiscrete::IsInitialized() const {
-  
-  return true;
-}
-
-void DirichletProcessDiscrete::Swap(DirichletProcessDiscrete* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata DirichletProcessDiscrete::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = DirichletProcessDiscrete_descriptor_;
-  metadata.reflection = DirichletProcessDiscrete_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int PitmanYorProcessDiscrete_Shared::kAlphaFieldNumber;
-const int PitmanYorProcessDiscrete_Shared::kDFieldNumber;
-const int PitmanYorProcessDiscrete_Shared::kCountsFieldNumber;
-#endif  // !_MSC_VER
-
-PitmanYorProcessDiscrete_Shared::PitmanYorProcessDiscrete_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void PitmanYorProcessDiscrete_Shared::InitAsDefaultInstance() {
-}
-
-PitmanYorProcessDiscrete_Shared::PitmanYorProcessDiscrete_Shared(const PitmanYorProcessDiscrete_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-PitmanYorProcessDiscrete_Shared::~PitmanYorProcessDiscrete_Shared() {
-  SharedDtor();
-}
-
-void PitmanYorProcessDiscrete_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void PitmanYorProcessDiscrete_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return PitmanYorProcessDiscrete_Shared_descriptor_;
-}
-
-const PitmanYorProcessDiscrete_Shared& PitmanYorProcessDiscrete_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-PitmanYorProcessDiscrete_Shared* PitmanYorProcessDiscrete_Shared::default_instance_ = NULL;
-
-PitmanYorProcessDiscrete_Shared* PitmanYorProcessDiscrete_Shared::New() const {
-  return new PitmanYorProcessDiscrete_Shared;
-}
-
-void PitmanYorProcessDiscrete_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-  }
-  d_.Clear();
-  counts_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool PitmanYorProcessDiscrete_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_d;
-        break;
-      }
-      
-      // repeated float d = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_d:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 21, input, this->mutable_d())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_d())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_d;
-        if (input->ExpectTag(24)) goto parse_counts;
-        break;
-      }
-      
-      // repeated uint64 counts = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_counts:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 24, input, this->mutable_counts())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_counts())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(24)) goto parse_counts;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void PitmanYorProcessDiscrete_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // repeated float d = 2;
-  for (int i = 0; i < this->d_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      2, this->d(i), output);
-  }
-  
-  // repeated uint64 counts = 3;
-  for (int i = 0; i < this->counts_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      3, this->counts(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* PitmanYorProcessDiscrete_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // repeated float d = 2;
-  for (int i = 0; i < this->d_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(2, this->d(i), target);
-  }
-  
-  // repeated uint64 counts = 3;
-  for (int i = 0; i < this->counts_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(3, this->counts(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int PitmanYorProcessDiscrete_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  // repeated float d = 2;
-  {
-    int data_size = 0;
-    data_size = 4 * this->d_size();
-    total_size += 1 * this->d_size() + data_size;
-  }
-  
-  // repeated uint64 counts = 3;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->counts_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->counts(i));
-    }
-    total_size += 1 * this->counts_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void PitmanYorProcessDiscrete_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const PitmanYorProcessDiscrete_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const PitmanYorProcessDiscrete_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void PitmanYorProcessDiscrete_Shared::MergeFrom(const PitmanYorProcessDiscrete_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  d_.MergeFrom(from.d_);
-  counts_.MergeFrom(from.counts_);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void PitmanYorProcessDiscrete_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete_Shared::CopyFrom(const PitmanYorProcessDiscrete_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool PitmanYorProcessDiscrete_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
-  
-  return true;
-}
-
-void PitmanYorProcessDiscrete_Shared::Swap(PitmanYorProcessDiscrete_Shared* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    d_.Swap(&other->d_);
-    counts_.Swap(&other->counts_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata PitmanYorProcessDiscrete_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = PitmanYorProcessDiscrete_Shared_descriptor_;
-  metadata.reflection = PitmanYorProcessDiscrete_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int PitmanYorProcessDiscrete_Group::kKeysFieldNumber;
-const int PitmanYorProcessDiscrete_Group::kValuesFieldNumber;
-#endif  // !_MSC_VER
-
-PitmanYorProcessDiscrete_Group::PitmanYorProcessDiscrete_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void PitmanYorProcessDiscrete_Group::InitAsDefaultInstance() {
-}
-
-PitmanYorProcessDiscrete_Group::PitmanYorProcessDiscrete_Group(const PitmanYorProcessDiscrete_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete_Group::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-PitmanYorProcessDiscrete_Group::~PitmanYorProcessDiscrete_Group() {
-  SharedDtor();
-}
-
-void PitmanYorProcessDiscrete_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void PitmanYorProcessDiscrete_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return PitmanYorProcessDiscrete_Group_descriptor_;
-}
-
-const PitmanYorProcessDiscrete_Group& PitmanYorProcessDiscrete_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-PitmanYorProcessDiscrete_Group* PitmanYorProcessDiscrete_Group::default_instance_ = NULL;
-
-PitmanYorProcessDiscrete_Group* PitmanYorProcessDiscrete_Group::New() const {
-  return new PitmanYorProcessDiscrete_Group;
-}
-
-void PitmanYorProcessDiscrete_Group::Clear() {
-  keys_.Clear();
-  values_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool PitmanYorProcessDiscrete_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated uint32 keys = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_keys:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 8, input, this->mutable_keys())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_keys())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(8)) goto parse_keys;
-        if (input->ExpectTag(16)) goto parse_values;
-        break;
-      }
-      
-      // repeated uint64 values = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_values:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 1, 16, input, this->mutable_values())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, this->mutable_values())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_values;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void PitmanYorProcessDiscrete_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated uint32 keys = 1;
-  for (int i = 0; i < this->keys_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
-      1, this->keys(i), output);
-  }
-  
-  // repeated uint64 values = 2;
-  for (int i = 0; i < this->values_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
-      2, this->values(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* PitmanYorProcessDiscrete_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated uint32 keys = 1;
-  for (int i = 0; i < this->keys_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32ToArray(1, this->keys(i), target);
-  }
-  
-  // repeated uint64 values = 2;
-  for (int i = 0; i < this->values_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt64ToArray(2, this->values(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int PitmanYorProcessDiscrete_Group::ByteSize() const {
-  int total_size = 0;
-  
-  // repeated uint32 keys = 1;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->keys_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt32Size(this->keys(i));
-    }
-    total_size += 1 * this->keys_size() + data_size;
-  }
-  
-  // repeated uint64 values = 2;
-  {
-    int data_size = 0;
-    for (int i = 0; i < this->values_size(); i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::
-        UInt64Size(this->values(i));
-    }
-    total_size += 1 * this->values_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void PitmanYorProcessDiscrete_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const PitmanYorProcessDiscrete_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const PitmanYorProcessDiscrete_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void PitmanYorProcessDiscrete_Group::MergeFrom(const PitmanYorProcessDiscrete_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  keys_.MergeFrom(from.keys_);
-  values_.MergeFrom(from.values_);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void PitmanYorProcessDiscrete_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete_Group::CopyFrom(const PitmanYorProcessDiscrete_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool PitmanYorProcessDiscrete_Group::IsInitialized() const {
-  
-  return true;
-}
-
-void PitmanYorProcessDiscrete_Group::Swap(PitmanYorProcessDiscrete_Group* other) {
-  if (other != this) {
-    keys_.Swap(&other->keys_);
-    values_.Swap(&other->values_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata PitmanYorProcessDiscrete_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = PitmanYorProcessDiscrete_Group_descriptor_;
-  metadata.reflection = PitmanYorProcessDiscrete_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-PitmanYorProcessDiscrete::PitmanYorProcessDiscrete()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void PitmanYorProcessDiscrete::InitAsDefaultInstance() {
-}
-
-PitmanYorProcessDiscrete::PitmanYorProcessDiscrete(const PitmanYorProcessDiscrete& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-PitmanYorProcessDiscrete::~PitmanYorProcessDiscrete() {
-  SharedDtor();
-}
-
-void PitmanYorProcessDiscrete::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void PitmanYorProcessDiscrete::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* PitmanYorProcessDiscrete::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return PitmanYorProcessDiscrete_descriptor_;
-}
-
-const PitmanYorProcessDiscrete& PitmanYorProcessDiscrete::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-PitmanYorProcessDiscrete* PitmanYorProcessDiscrete::default_instance_ = NULL;
-
-PitmanYorProcessDiscrete* PitmanYorProcessDiscrete::New() const {
-  return new PitmanYorProcessDiscrete;
-}
-
-void PitmanYorProcessDiscrete::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool PitmanYorProcessDiscrete::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void PitmanYorProcessDiscrete::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* PitmanYorProcessDiscrete::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int PitmanYorProcessDiscrete::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void PitmanYorProcessDiscrete::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const PitmanYorProcessDiscrete* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const PitmanYorProcessDiscrete*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void PitmanYorProcessDiscrete::MergeFrom(const PitmanYorProcessDiscrete& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void PitmanYorProcessDiscrete::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void PitmanYorProcessDiscrete::CopyFrom(const PitmanYorProcessDiscrete& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool PitmanYorProcessDiscrete::IsInitialized() const {
-  
-  return true;
-}
-
-void PitmanYorProcessDiscrete::Swap(PitmanYorProcessDiscrete* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata PitmanYorProcessDiscrete::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = PitmanYorProcessDiscrete_descriptor_;
-  metadata.reflection = PitmanYorProcessDiscrete_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int GammaPoisson_Shared::kAlphaFieldNumber;
-const int GammaPoisson_Shared::kInvBetaFieldNumber;
-#endif  // !_MSC_VER
-
-GammaPoisson_Shared::GammaPoisson_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void GammaPoisson_Shared::InitAsDefaultInstance() {
-}
-
-GammaPoisson_Shared::GammaPoisson_Shared(const GammaPoisson_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void GammaPoisson_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  inv_beta_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-GammaPoisson_Shared::~GammaPoisson_Shared() {
-  SharedDtor();
-}
-
-void GammaPoisson_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void GammaPoisson_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* GammaPoisson_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return GammaPoisson_Shared_descriptor_;
-}
-
-const GammaPoisson_Shared& GammaPoisson_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-GammaPoisson_Shared* GammaPoisson_Shared::default_instance_ = NULL;
-
-GammaPoisson_Shared* GammaPoisson_Shared::New() const {
-  return new GammaPoisson_Shared;
-}
-
-void GammaPoisson_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-    inv_beta_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool GammaPoisson_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_inv_beta;
-        break;
-      }
-      
-      // required float inv_beta = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_inv_beta:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &inv_beta_)));
-          set_has_inv_beta();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void GammaPoisson_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // required float inv_beta = 2;
-  if (has_inv_beta()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->inv_beta(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* GammaPoisson_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // required float inv_beta = 2;
-  if (has_inv_beta()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->inv_beta(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int GammaPoisson_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float inv_beta = 2;
-    if (has_inv_beta()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void GammaPoisson_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const GammaPoisson_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const GammaPoisson_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void GammaPoisson_Shared::MergeFrom(const GammaPoisson_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-    if (from.has_inv_beta()) {
-      set_inv_beta(from.inv_beta());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void GammaPoisson_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void GammaPoisson_Shared::CopyFrom(const GammaPoisson_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool GammaPoisson_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void GammaPoisson_Shared::Swap(GammaPoisson_Shared* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    std::swap(inv_beta_, other->inv_beta_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata GammaPoisson_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = GammaPoisson_Shared_descriptor_;
-  metadata.reflection = GammaPoisson_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int GammaPoisson_Group::kCountFieldNumber;
-const int GammaPoisson_Group::kSumFieldNumber;
-const int GammaPoisson_Group::kLogProdFieldNumber;
-#endif  // !_MSC_VER
-
-GammaPoisson_Group::GammaPoisson_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void GammaPoisson_Group::InitAsDefaultInstance() {
-}
-
-GammaPoisson_Group::GammaPoisson_Group(const GammaPoisson_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void GammaPoisson_Group::SharedCtor() {
-  _cached_size_ = 0;
-  count_ = GOOGLE_ULONGLONG(0);
-  sum_ = GOOGLE_ULONGLONG(0);
-  log_prod_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-GammaPoisson_Group::~GammaPoisson_Group() {
-  SharedDtor();
-}
-
-void GammaPoisson_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void GammaPoisson_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* GammaPoisson_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return GammaPoisson_Group_descriptor_;
-}
-
-const GammaPoisson_Group& GammaPoisson_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-GammaPoisson_Group* GammaPoisson_Group::default_instance_ = NULL;
-
-GammaPoisson_Group* GammaPoisson_Group::New() const {
-  return new GammaPoisson_Group;
-}
-
-void GammaPoisson_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    count_ = GOOGLE_ULONGLONG(0);
-    sum_ = GOOGLE_ULONGLONG(0);
-    log_prod_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool GammaPoisson_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 count = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &count_)));
-          set_has_count();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_sum;
-        break;
-      }
-      
-      // required uint64 sum = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_sum:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &sum_)));
-          set_has_sum();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_log_prod;
-        break;
-      }
-      
-      // required float log_prod = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_log_prod:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &log_prod_)));
-          set_has_log_prod();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void GammaPoisson_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->count(), output);
-  }
-  
-  // required uint64 sum = 2;
-  if (has_sum()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->sum(), output);
-  }
-  
-  // required float log_prod = 3;
-  if (has_log_prod()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->log_prod(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* GammaPoisson_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->count(), target);
-  }
-  
-  // required uint64 sum = 2;
-  if (has_sum()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->sum(), target);
-  }
-  
-  // required float log_prod = 3;
-  if (has_log_prod()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->log_prod(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int GammaPoisson_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 count = 1;
-    if (has_count()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->count());
-    }
-    
-    // required uint64 sum = 2;
-    if (has_sum()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->sum());
-    }
-    
-    // required float log_prod = 3;
-    if (has_log_prod()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void GammaPoisson_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const GammaPoisson_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const GammaPoisson_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void GammaPoisson_Group::MergeFrom(const GammaPoisson_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_count()) {
-      set_count(from.count());
-    }
-    if (from.has_sum()) {
-      set_sum(from.sum());
-    }
-    if (from.has_log_prod()) {
-      set_log_prod(from.log_prod());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void GammaPoisson_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void GammaPoisson_Group::CopyFrom(const GammaPoisson_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool GammaPoisson_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
-  
-  return true;
-}
-
-void GammaPoisson_Group::Swap(GammaPoisson_Group* other) {
-  if (other != this) {
-    std::swap(count_, other->count_);
-    std::swap(sum_, other->sum_);
-    std::swap(log_prod_, other->log_prod_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata GammaPoisson_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = GammaPoisson_Group_descriptor_;
-  metadata.reflection = GammaPoisson_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-GammaPoisson::GammaPoisson()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void GammaPoisson::InitAsDefaultInstance() {
-}
-
-GammaPoisson::GammaPoisson(const GammaPoisson& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void GammaPoisson::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-GammaPoisson::~GammaPoisson() {
-  SharedDtor();
-}
-
-void GammaPoisson::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void GammaPoisson::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* GammaPoisson::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return GammaPoisson_descriptor_;
-}
-
-const GammaPoisson& GammaPoisson::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-GammaPoisson* GammaPoisson::default_instance_ = NULL;
-
-GammaPoisson* GammaPoisson::New() const {
-  return new GammaPoisson;
-}
-
-void GammaPoisson::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool GammaPoisson::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void GammaPoisson::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* GammaPoisson::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int GammaPoisson::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void GammaPoisson::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const GammaPoisson* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const GammaPoisson*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void GammaPoisson::MergeFrom(const GammaPoisson& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void GammaPoisson::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void GammaPoisson::CopyFrom(const GammaPoisson& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool GammaPoisson::IsInitialized() const {
-  
-  return true;
-}
-
-void GammaPoisson::Swap(GammaPoisson* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata GammaPoisson::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = GammaPoisson_descriptor_;
-  metadata.reflection = GammaPoisson_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int BetaNegativeBinomial_Shared::kAlphaFieldNumber;
-const int BetaNegativeBinomial_Shared::kBetaFieldNumber;
-const int BetaNegativeBinomial_Shared::kRFieldNumber;
-#endif  // !_MSC_VER
-
-BetaNegativeBinomial_Shared::BetaNegativeBinomial_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaNegativeBinomial_Shared::InitAsDefaultInstance() {
-}
-
-BetaNegativeBinomial_Shared::BetaNegativeBinomial_Shared(const BetaNegativeBinomial_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  alpha_ = 0;
-  beta_ = 0;
-  r_ = GOOGLE_ULONGLONG(0);
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaNegativeBinomial_Shared::~BetaNegativeBinomial_Shared() {
-  SharedDtor();
-}
-
-void BetaNegativeBinomial_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaNegativeBinomial_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaNegativeBinomial_Shared_descriptor_;
-}
-
-const BetaNegativeBinomial_Shared& BetaNegativeBinomial_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaNegativeBinomial_Shared* BetaNegativeBinomial_Shared::default_instance_ = NULL;
-
-BetaNegativeBinomial_Shared* BetaNegativeBinomial_Shared::New() const {
-  return new BetaNegativeBinomial_Shared;
-}
-
-void BetaNegativeBinomial_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    alpha_ = 0;
-    beta_ = 0;
-    r_ = GOOGLE_ULONGLONG(0);
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaNegativeBinomial_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float alpha = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &alpha_)));
-          set_has_alpha();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_beta;
-        break;
-      }
-      
-      // required float beta = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_beta:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &beta_)));
-          set_has_beta();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(24)) goto parse_r;
-        break;
-      }
-      
-      // required uint64 r = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_r:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &r_)));
-          set_has_r();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void BetaNegativeBinomial_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->alpha(), output);
-  }
-  
-  // required float beta = 2;
-  if (has_beta()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->beta(), output);
-  }
-  
-  // required uint64 r = 3;
-  if (has_r()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->r(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaNegativeBinomial_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float alpha = 1;
-  if (has_alpha()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->alpha(), target);
-  }
-  
-  // required float beta = 2;
-  if (has_beta()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->beta(), target);
-  }
-  
-  // required uint64 r = 3;
-  if (has_r()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->r(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaNegativeBinomial_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float alpha = 1;
-    if (has_alpha()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float beta = 2;
-    if (has_beta()) {
-      total_size += 1 + 4;
-    }
-    
-    // required uint64 r = 3;
-    if (has_r()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->r());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaNegativeBinomial_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaNegativeBinomial_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaNegativeBinomial_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaNegativeBinomial_Shared::MergeFrom(const BetaNegativeBinomial_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_alpha()) {
-      set_alpha(from.alpha());
-    }
-    if (from.has_beta()) {
-      set_beta(from.beta());
-    }
-    if (from.has_r()) {
-      set_r(from.r());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaNegativeBinomial_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial_Shared::CopyFrom(const BetaNegativeBinomial_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaNegativeBinomial_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
-  
-  return true;
-}
-
-void BetaNegativeBinomial_Shared::Swap(BetaNegativeBinomial_Shared* other) {
-  if (other != this) {
-    std::swap(alpha_, other->alpha_);
-    std::swap(beta_, other->beta_);
-    std::swap(r_, other->r_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaNegativeBinomial_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaNegativeBinomial_Shared_descriptor_;
-  metadata.reflection = BetaNegativeBinomial_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int BetaNegativeBinomial_Group::kCountFieldNumber;
-const int BetaNegativeBinomial_Group::kSumFieldNumber;
-#endif  // !_MSC_VER
-
-BetaNegativeBinomial_Group::BetaNegativeBinomial_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaNegativeBinomial_Group::InitAsDefaultInstance() {
-}
-
-BetaNegativeBinomial_Group::BetaNegativeBinomial_Group(const BetaNegativeBinomial_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial_Group::SharedCtor() {
-  _cached_size_ = 0;
-  count_ = GOOGLE_ULONGLONG(0);
-  sum_ = GOOGLE_ULONGLONG(0);
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaNegativeBinomial_Group::~BetaNegativeBinomial_Group() {
-  SharedDtor();
-}
-
-void BetaNegativeBinomial_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaNegativeBinomial_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaNegativeBinomial_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaNegativeBinomial_Group_descriptor_;
-}
-
-const BetaNegativeBinomial_Group& BetaNegativeBinomial_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaNegativeBinomial_Group* BetaNegativeBinomial_Group::default_instance_ = NULL;
-
-BetaNegativeBinomial_Group* BetaNegativeBinomial_Group::New() const {
-  return new BetaNegativeBinomial_Group;
-}
-
-void BetaNegativeBinomial_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    count_ = GOOGLE_ULONGLONG(0);
-    sum_ = GOOGLE_ULONGLONG(0);
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaNegativeBinomial_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 count = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &count_)));
-          set_has_count();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(16)) goto parse_sum;
-        break;
-      }
-      
-      // required uint64 sum = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_sum:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &sum_)));
-          set_has_sum();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void BetaNegativeBinomial_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->count(), output);
-  }
-  
-  // required uint64 sum = 2;
-  if (has_sum()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->sum(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaNegativeBinomial_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->count(), target);
-  }
-  
-  // required uint64 sum = 2;
-  if (has_sum()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->sum(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaNegativeBinomial_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 count = 1;
-    if (has_count()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->count());
-    }
-    
-    // required uint64 sum = 2;
-    if (has_sum()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->sum());
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaNegativeBinomial_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaNegativeBinomial_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaNegativeBinomial_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaNegativeBinomial_Group::MergeFrom(const BetaNegativeBinomial_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_count()) {
-      set_count(from.count());
-    }
-    if (from.has_sum()) {
-      set_sum(from.sum());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaNegativeBinomial_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial_Group::CopyFrom(const BetaNegativeBinomial_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaNegativeBinomial_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
-  
-  return true;
-}
-
-void BetaNegativeBinomial_Group::Swap(BetaNegativeBinomial_Group* other) {
-  if (other != this) {
-    std::swap(count_, other->count_);
-    std::swap(sum_, other->sum_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaNegativeBinomial_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaNegativeBinomial_Group_descriptor_;
-  metadata.reflection = BetaNegativeBinomial_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-BetaNegativeBinomial::BetaNegativeBinomial()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void BetaNegativeBinomial::InitAsDefaultInstance() {
-}
-
-BetaNegativeBinomial::BetaNegativeBinomial(const BetaNegativeBinomial& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-BetaNegativeBinomial::~BetaNegativeBinomial() {
-  SharedDtor();
-}
-
-void BetaNegativeBinomial::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void BetaNegativeBinomial::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* BetaNegativeBinomial::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return BetaNegativeBinomial_descriptor_;
-}
-
-const BetaNegativeBinomial& BetaNegativeBinomial::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-BetaNegativeBinomial* BetaNegativeBinomial::default_instance_ = NULL;
-
-BetaNegativeBinomial* BetaNegativeBinomial::New() const {
-  return new BetaNegativeBinomial;
-}
-
-void BetaNegativeBinomial::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool BetaNegativeBinomial::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void BetaNegativeBinomial::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* BetaNegativeBinomial::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int BetaNegativeBinomial::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void BetaNegativeBinomial::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const BetaNegativeBinomial* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const BetaNegativeBinomial*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void BetaNegativeBinomial::MergeFrom(const BetaNegativeBinomial& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void BetaNegativeBinomial::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void BetaNegativeBinomial::CopyFrom(const BetaNegativeBinomial& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool BetaNegativeBinomial::IsInitialized() const {
-  
-  return true;
-}
-
-void BetaNegativeBinomial::Swap(BetaNegativeBinomial* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata BetaNegativeBinomial::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = BetaNegativeBinomial_descriptor_;
-  metadata.reflection = BetaNegativeBinomial_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int NormalInverseChiSq_Shared::kMuFieldNumber;
-const int NormalInverseChiSq_Shared::kKappaFieldNumber;
-const int NormalInverseChiSq_Shared::kSigmasqFieldNumber;
-const int NormalInverseChiSq_Shared::kNuFieldNumber;
-#endif  // !_MSC_VER
-
-NormalInverseChiSq_Shared::NormalInverseChiSq_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseChiSq_Shared::InitAsDefaultInstance() {
-}
-
-NormalInverseChiSq_Shared::NormalInverseChiSq_Shared(const NormalInverseChiSq_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  mu_ = 0;
-  kappa_ = 0;
-  sigmasq_ = 0;
-  nu_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseChiSq_Shared::~NormalInverseChiSq_Shared() {
-  SharedDtor();
-}
-
-void NormalInverseChiSq_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseChiSq_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseChiSq_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseChiSq_Shared_descriptor_;
-}
-
-const NormalInverseChiSq_Shared& NormalInverseChiSq_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseChiSq_Shared* NormalInverseChiSq_Shared::default_instance_ = NULL;
-
-NormalInverseChiSq_Shared* NormalInverseChiSq_Shared::New() const {
-  return new NormalInverseChiSq_Shared;
-}
-
-void NormalInverseChiSq_Shared::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    mu_ = 0;
-    kappa_ = 0;
-    sigmasq_ = 0;
-    nu_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseChiSq_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required float mu = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &mu_)));
-          set_has_mu();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_kappa;
-        break;
-      }
-      
-      // required float kappa = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_kappa:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &kappa_)));
-          set_has_kappa();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_sigmasq;
-        break;
-      }
-      
-      // required float sigmasq = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_sigmasq:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &sigmasq_)));
-          set_has_sigmasq();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(37)) goto parse_nu;
-        break;
-      }
-      
-      // required float nu = 4;
-      case 4: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_nu:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &nu_)));
-          set_has_nu();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseChiSq_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required float mu = 1;
-  if (has_mu()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->mu(), output);
-  }
-  
-  // required float kappa = 2;
-  if (has_kappa()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->kappa(), output);
-  }
-  
-  // required float sigmasq = 3;
-  if (has_sigmasq()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->sigmasq(), output);
-  }
-  
-  // required float nu = 4;
-  if (has_nu()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->nu(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseChiSq_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required float mu = 1;
-  if (has_mu()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->mu(), target);
-  }
-  
-  // required float kappa = 2;
-  if (has_kappa()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->kappa(), target);
-  }
-  
-  // required float sigmasq = 3;
-  if (has_sigmasq()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->sigmasq(), target);
-  }
-  
-  // required float nu = 4;
-  if (has_nu()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(4, this->nu(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseChiSq_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required float mu = 1;
-    if (has_mu()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float kappa = 2;
-    if (has_kappa()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float sigmasq = 3;
-    if (has_sigmasq()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float nu = 4;
-    if (has_nu()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseChiSq_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseChiSq_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseChiSq_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseChiSq_Shared::MergeFrom(const NormalInverseChiSq_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_mu()) {
-      set_mu(from.mu());
-    }
-    if (from.has_kappa()) {
-      set_kappa(from.kappa());
-    }
-    if (from.has_sigmasq()) {
-      set_sigmasq(from.sigmasq());
-    }
-    if (from.has_nu()) {
-      set_nu(from.nu());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseChiSq_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq_Shared::CopyFrom(const NormalInverseChiSq_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseChiSq_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false;
-  
-  return true;
-}
-
-void NormalInverseChiSq_Shared::Swap(NormalInverseChiSq_Shared* other) {
-  if (other != this) {
-    std::swap(mu_, other->mu_);
-    std::swap(kappa_, other->kappa_);
-    std::swap(sigmasq_, other->sigmasq_);
-    std::swap(nu_, other->nu_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseChiSq_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseChiSq_Shared_descriptor_;
-  metadata.reflection = NormalInverseChiSq_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int NormalInverseChiSq_Group::kCountFieldNumber;
-const int NormalInverseChiSq_Group::kMeanFieldNumber;
-const int NormalInverseChiSq_Group::kCountTimesVarianceFieldNumber;
-#endif  // !_MSC_VER
-
-NormalInverseChiSq_Group::NormalInverseChiSq_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseChiSq_Group::InitAsDefaultInstance() {
-}
-
-NormalInverseChiSq_Group::NormalInverseChiSq_Group(const NormalInverseChiSq_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq_Group::SharedCtor() {
-  _cached_size_ = 0;
-  count_ = GOOGLE_ULONGLONG(0);
-  mean_ = 0;
-  count_times_variance_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseChiSq_Group::~NormalInverseChiSq_Group() {
-  SharedDtor();
-}
-
-void NormalInverseChiSq_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseChiSq_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseChiSq_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseChiSq_Group_descriptor_;
-}
-
-const NormalInverseChiSq_Group& NormalInverseChiSq_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseChiSq_Group* NormalInverseChiSq_Group::default_instance_ = NULL;
-
-NormalInverseChiSq_Group* NormalInverseChiSq_Group::New() const {
-  return new NormalInverseChiSq_Group;
-}
-
-void NormalInverseChiSq_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    count_ = GOOGLE_ULONGLONG(0);
-    mean_ = 0;
-    count_times_variance_ = 0;
-  }
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseChiSq_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required uint64 count = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &count_)));
-          set_has_count();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_mean;
-        break;
-      }
-      
-      // required float mean = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_mean:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &mean_)));
-          set_has_mean();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_count_times_variance;
-        break;
-      }
-      
-      // required float count_times_variance = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_count_times_variance:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &count_times_variance_)));
-          set_has_count_times_variance();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseChiSq_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->count(), output);
-  }
-  
-  // required float mean = 2;
-  if (has_mean()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->mean(), output);
-  }
-  
-  // required float count_times_variance = 3;
-  if (has_count_times_variance()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->count_times_variance(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseChiSq_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required uint64 count = 1;
-  if (has_count()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->count(), target);
-  }
-  
-  // required float mean = 2;
-  if (has_mean()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->mean(), target);
-  }
-  
-  // required float count_times_variance = 3;
-  if (has_count_times_variance()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->count_times_variance(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseChiSq_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required uint64 count = 1;
-    if (has_count()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::UInt64Size(
-          this->count());
-    }
-    
-    // required float mean = 2;
-    if (has_mean()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float count_times_variance = 3;
-    if (has_count_times_variance()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseChiSq_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseChiSq_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseChiSq_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseChiSq_Group::MergeFrom(const NormalInverseChiSq_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_count()) {
-      set_count(from.count());
-    }
-    if (from.has_mean()) {
-      set_mean(from.mean());
-    }
-    if (from.has_count_times_variance()) {
-      set_count_times_variance(from.count_times_variance());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseChiSq_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq_Group::CopyFrom(const NormalInverseChiSq_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseChiSq_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
-  
-  return true;
-}
-
-void NormalInverseChiSq_Group::Swap(NormalInverseChiSq_Group* other) {
-  if (other != this) {
-    std::swap(count_, other->count_);
-    std::swap(mean_, other->mean_);
-    std::swap(count_times_variance_, other->count_times_variance_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseChiSq_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseChiSq_Group_descriptor_;
-  metadata.reflection = NormalInverseChiSq_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-NormalInverseChiSq::NormalInverseChiSq()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseChiSq::InitAsDefaultInstance() {
-}
-
-NormalInverseChiSq::NormalInverseChiSq(const NormalInverseChiSq& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseChiSq::~NormalInverseChiSq() {
-  SharedDtor();
-}
-
-void NormalInverseChiSq::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseChiSq::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseChiSq::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseChiSq_descriptor_;
-}
-
-const NormalInverseChiSq& NormalInverseChiSq::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseChiSq* NormalInverseChiSq::default_instance_ = NULL;
-
-NormalInverseChiSq* NormalInverseChiSq::New() const {
-  return new NormalInverseChiSq;
-}
-
-void NormalInverseChiSq::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseChiSq::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseChiSq::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseChiSq::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseChiSq::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseChiSq::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseChiSq* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseChiSq*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseChiSq::MergeFrom(const NormalInverseChiSq& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseChiSq::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseChiSq::CopyFrom(const NormalInverseChiSq& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseChiSq::IsInitialized() const {
-  
-  return true;
-}
-
-void NormalInverseChiSq::Swap(NormalInverseChiSq* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseChiSq::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseChiSq_descriptor_;
-  metadata.reflection = NormalInverseChiSq_reflection_;
-  return metadata;
-}
-
-
-// ===================================================================
-
-#ifndef _MSC_VER
-const int NormalInverseWishart_Shared::kMuFieldNumber;
-const int NormalInverseWishart_Shared::kKappaFieldNumber;
-const int NormalInverseWishart_Shared::kPsiFieldNumber;
-const int NormalInverseWishart_Shared::kNuFieldNumber;
-#endif  // !_MSC_VER
-
-NormalInverseWishart_Shared::NormalInverseWishart_Shared()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseWishart_Shared::InitAsDefaultInstance() {
-}
-
-NormalInverseWishart_Shared::NormalInverseWishart_Shared(const NormalInverseWishart_Shared& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart_Shared::SharedCtor() {
-  _cached_size_ = 0;
-  kappa_ = 0;
-  nu_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseWishart_Shared::~NormalInverseWishart_Shared() {
-  SharedDtor();
-}
-
-void NormalInverseWishart_Shared::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseWishart_Shared::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseWishart_Shared::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseWishart_Shared_descriptor_;
-}
-
-const NormalInverseWishart_Shared& NormalInverseWishart_Shared::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseWishart_Shared* NormalInverseWishart_Shared::default_instance_ = NULL;
-
-NormalInverseWishart_Shared* NormalInverseWishart_Shared::New() const {
-  return new NormalInverseWishart_Shared;
-}
-
-void NormalInverseWishart_Shared::Clear() {
-  if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) {
-    kappa_ = 0;
-    nu_ = 0;
-  }
-  mu_.Clear();
-  psi_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseWishart_Shared::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated float mu = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_mu:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 13, input, this->mutable_mu())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_mu())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(13)) goto parse_mu;
-        if (input->ExpectTag(21)) goto parse_kappa;
-        break;
-      }
-      
-      // required float kappa = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_kappa:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &kappa_)));
-          set_has_kappa();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_psi;
-        break;
-      }
-      
-      // repeated float psi = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_psi:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 29, input, this->mutable_psi())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_psi())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_psi;
-        if (input->ExpectTag(37)) goto parse_nu;
-        break;
-      }
-      
-      // required float nu = 4;
-      case 4: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_nu:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &nu_)));
-          set_has_nu();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseWishart_Shared::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // repeated float mu = 1;
-  for (int i = 0; i < this->mu_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      1, this->mu(i), output);
-  }
-  
-  // required float kappa = 2;
-  if (has_kappa()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->kappa(), output);
-  }
-  
-  // repeated float psi = 3;
-  for (int i = 0; i < this->psi_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      3, this->psi(i), output);
-  }
-  
-  // required float nu = 4;
-  if (has_nu()) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->nu(), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseWishart_Shared::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // repeated float mu = 1;
-  for (int i = 0; i < this->mu_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(1, this->mu(i), target);
-  }
-  
-  // required float kappa = 2;
-  if (has_kappa()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->kappa(), target);
-  }
-  
-  // repeated float psi = 3;
-  for (int i = 0; i < this->psi_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(3, this->psi(i), target);
-  }
-  
-  // required float nu = 4;
-  if (has_nu()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(4, this->nu(), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseWishart_Shared::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) {
-    // required float kappa = 2;
-    if (has_kappa()) {
-      total_size += 1 + 4;
-    }
-    
-    // required float nu = 4;
-    if (has_nu()) {
-      total_size += 1 + 4;
-    }
-    
-  }
-  // repeated float mu = 1;
-  {
-    int data_size = 0;
-    data_size = 4 * this->mu_size();
-    total_size += 1 * this->mu_size() + data_size;
-  }
-  
-  // repeated float psi = 3;
-  {
-    int data_size = 0;
-    data_size = 4 * this->psi_size();
-    total_size += 1 * this->psi_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseWishart_Shared::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseWishart_Shared* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseWishart_Shared*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseWishart_Shared::MergeFrom(const NormalInverseWishart_Shared& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mu_.MergeFrom(from.mu_);
-  psi_.MergeFrom(from.psi_);
-  if (from._has_bits_[1 / 32] & (0xffu << (1 % 32))) {
-    if (from.has_kappa()) {
-      set_kappa(from.kappa());
-    }
-    if (from.has_nu()) {
-      set_nu(from.nu());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseWishart_Shared::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart_Shared::CopyFrom(const NormalInverseWishart_Shared& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseWishart_Shared::IsInitialized() const {
-  if ((_has_bits_[0] & 0x0000000a) != 0x0000000a) return false;
-  
-  return true;
-}
-
-void NormalInverseWishart_Shared::Swap(NormalInverseWishart_Shared* other) {
-  if (other != this) {
-    mu_.Swap(&other->mu_);
-    std::swap(kappa_, other->kappa_);
-    psi_.Swap(&other->psi_);
-    std::swap(nu_, other->nu_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseWishart_Shared::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseWishart_Shared_descriptor_;
-  metadata.reflection = NormalInverseWishart_Shared_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-const int NormalInverseWishart_Group::kCountFieldNumber;
-const int NormalInverseWishart_Group::kSumXFieldNumber;
-const int NormalInverseWishart_Group::kSumXxTFieldNumber;
-#endif  // !_MSC_VER
-
-NormalInverseWishart_Group::NormalInverseWishart_Group()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseWishart_Group::InitAsDefaultInstance() {
-}
-
-NormalInverseWishart_Group::NormalInverseWishart_Group(const NormalInverseWishart_Group& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart_Group::SharedCtor() {
-  _cached_size_ = 0;
-  count_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseWishart_Group::~NormalInverseWishart_Group() {
-  SharedDtor();
-}
-
-void NormalInverseWishart_Group::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseWishart_Group::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseWishart_Group::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseWishart_Group_descriptor_;
-}
-
-const NormalInverseWishart_Group& NormalInverseWishart_Group::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseWishart_Group* NormalInverseWishart_Group::default_instance_ = NULL;
-
-NormalInverseWishart_Group* NormalInverseWishart_Group::New() const {
-  return new NormalInverseWishart_Group;
-}
-
-void NormalInverseWishart_Group::Clear() {
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    count_ = 0;
-  }
-  sum_x_.Clear();
-  sum_xxt_.Clear();
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseWishart_Group::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required int32 count = 1;
-      case 1: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &count_)));
-          set_has_count();
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_sum_x;
-        break;
-      }
-      
-      // repeated float sum_x = 2;
-      case 2: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_sum_x:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 21, input, this->mutable_sum_x())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_sum_x())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(21)) goto parse_sum_x;
-        if (input->ExpectTag(29)) goto parse_sum_xxT;
-        break;
-      }
-      
-      // repeated float sum_xxT = 3;
-      case 3: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
-         parse_sum_xxT:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 1, 29, input, this->mutable_sum_xxt())));
-        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
-                   == ::google::protobuf::internal::WireFormatLite::
-                      WIRETYPE_LENGTH_DELIMITED) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, this->mutable_sum_xxt())));
-        } else {
-          goto handle_uninterpreted;
-        }
-        if (input->ExpectTag(29)) goto parse_sum_xxT;
-        if (input->ExpectAtEnd()) return true;
-        break;
-      }
-      
-      default: {
-      handle_uninterpreted:
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-          return true;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseWishart_Group::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // required int32 count = 1;
-  if (has_count()) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->count(), output);
-  }
-  
-  // repeated float sum_x = 2;
-  for (int i = 0; i < this->sum_x_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      2, this->sum_x(i), output);
-  }
-  
-  // repeated float sum_xxT = 3;
-  for (int i = 0; i < this->sum_xxt_size(); i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(
-      3, this->sum_xxt(i), output);
-  }
-  
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseWishart_Group::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // required int32 count = 1;
-  if (has_count()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->count(), target);
-  }
-  
-  // repeated float sum_x = 2;
-  for (int i = 0; i < this->sum_x_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(2, this->sum_x(i), target);
-  }
-  
-  // repeated float sum_xxT = 3;
-  for (int i = 0; i < this->sum_xxt_size(); i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteFloatToArray(3, this->sum_xxt(i), target);
-  }
-  
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseWishart_Group::ByteSize() const {
-  int total_size = 0;
-  
-  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    // required int32 count = 1;
-    if (has_count()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-          this->count());
-    }
-    
-  }
-  // repeated float sum_x = 2;
-  {
-    int data_size = 0;
-    data_size = 4 * this->sum_x_size();
-    total_size += 1 * this->sum_x_size() + data_size;
-  }
-  
-  // repeated float sum_xxT = 3;
-  {
-    int data_size = 0;
-    data_size = 4 * this->sum_xxt_size();
-    total_size += 1 * this->sum_xxt_size() + data_size;
-  }
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseWishart_Group::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseWishart_Group* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseWishart_Group*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseWishart_Group::MergeFrom(const NormalInverseWishart_Group& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  sum_x_.MergeFrom(from.sum_x_);
-  sum_xxt_.MergeFrom(from.sum_xxt_);
-  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
-    if (from.has_count()) {
-      set_count(from.count());
-    }
-  }
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseWishart_Group::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart_Group::CopyFrom(const NormalInverseWishart_Group& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseWishart_Group::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
-  
-  return true;
-}
-
-void NormalInverseWishart_Group::Swap(NormalInverseWishart_Group* other) {
-  if (other != this) {
-    std::swap(count_, other->count_);
-    sum_x_.Swap(&other->sum_x_);
-    sum_xxt_.Swap(&other->sum_xxt_);
-    std::swap(_has_bits_[0], other->_has_bits_[0]);
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseWishart_Group::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseWishart_Group_descriptor_;
-  metadata.reflection = NormalInverseWishart_Group_reflection_;
-  return metadata;
-}
-
-
-// -------------------------------------------------------------------
-
-#ifndef _MSC_VER
-#endif  // !_MSC_VER
-
-NormalInverseWishart::NormalInverseWishart()
-  : ::google::protobuf::Message() {
-  SharedCtor();
-}
-
-void NormalInverseWishart::InitAsDefaultInstance() {
-}
-
-NormalInverseWishart::NormalInverseWishart(const NormalInverseWishart& from)
-  : ::google::protobuf::Message() {
-  SharedCtor();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart::SharedCtor() {
-  _cached_size_ = 0;
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-}
-
-NormalInverseWishart::~NormalInverseWishart() {
-  SharedDtor();
-}
-
-void NormalInverseWishart::SharedDtor() {
-  if (this != default_instance_) {
-  }
-}
-
-void NormalInverseWishart::SetCachedSize(int size) const {
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-}
-const ::google::protobuf::Descriptor* NormalInverseWishart::descriptor() {
-  protobuf_AssignDescriptorsOnce();
-  return NormalInverseWishart_descriptor_;
-}
-
-const NormalInverseWishart& NormalInverseWishart::default_instance() {
-  if (default_instance_ == NULL) protobuf_AddDesc_distributions_2fio_2fschema_2eproto();  return *default_instance_;
-}
-
-NormalInverseWishart* NormalInverseWishart::default_instance_ = NULL;
-
-NormalInverseWishart* NormalInverseWishart::New() const {
-  return new NormalInverseWishart;
-}
-
-void NormalInverseWishart::Clear() {
-  ::memset(_has_bits_, 0, sizeof(_has_bits_));
-  mutable_unknown_fields()->Clear();
-}
-
-bool NormalInverseWishart::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
-  ::google::protobuf::uint32 tag;
-  while ((tag = input->ReadTag()) != 0) {
-    if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
-        ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
-      return true;
-    }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, mutable_unknown_fields()));
-  }
-  return true;
-#undef DO_
-}
-
-void NormalInverseWishart::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  if (!unknown_fields().empty()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        unknown_fields(), output);
-  }
-}
-
-::google::protobuf::uint8* NormalInverseWishart::SerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  if (!unknown_fields().empty()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        unknown_fields(), target);
-  }
-  return target;
-}
-
-int NormalInverseWishart::ByteSize() const {
-  int total_size = 0;
-  
-  if (!unknown_fields().empty()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        unknown_fields());
-  }
-  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-  _cached_size_ = total_size;
-  GOOGLE_SAFE_CONCURRENT_WRITES_END();
-  return total_size;
-}
-
-void NormalInverseWishart::MergeFrom(const ::google::protobuf::Message& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  const NormalInverseWishart* source =
-    ::google::protobuf::internal::dynamic_cast_if_available<const NormalInverseWishart*>(
-      &from);
-  if (source == NULL) {
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-    MergeFrom(*source);
-  }
-}
-
-void NormalInverseWishart::MergeFrom(const NormalInverseWishart& from) {
-  GOOGLE_CHECK_NE(&from, this);
-  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
-}
-
-void NormalInverseWishart::CopyFrom(const ::google::protobuf::Message& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void NormalInverseWishart::CopyFrom(const NormalInverseWishart& from) {
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool NormalInverseWishart::IsInitialized() const {
-  
-  return true;
-}
-
-void NormalInverseWishart::Swap(NormalInverseWishart* other) {
-  if (other != this) {
-    _unknown_fields_.Swap(&other->_unknown_fields_);
-    std::swap(_cached_size_, other->_cached_size_);
-  }
-}
-
-::google::protobuf::Metadata NormalInverseWishart::GetMetadata() const {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::Metadata metadata;
-  metadata.descriptor = NormalInverseWishart_descriptor_;
-  metadata.reflection = NormalInverseWishart_reflection_;
-  return metadata;
-}
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-}  // namespace distributions
-}  // namespace protobuf
-
-// @@protoc_insertion_point(global_scope)